The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Changes 053
MANIFEST 13
META.json 110124
META.yml 4549
Makefile.PL 711
README 11
corpus/AutoPrereq/dist.ini 01
dist.ini 33
lib/Dist/Zilla/App/Command/build.pm 22
lib/Dist/Zilla/App/Command/clean.pm 22
lib/Dist/Zilla/App/Command/install.pm 22
lib/Dist/Zilla/App/Command/listdeps.pm 65
lib/Dist/Zilla/App/Command/new.pm 35
lib/Dist/Zilla/App/Command/nop.pm 22
lib/Dist/Zilla/App/Command/release.pm 22
lib/Dist/Zilla/App/Command/run.pm 22
lib/Dist/Zilla/App/Command/smoke.pm 22
lib/Dist/Zilla/App/Command/test.pm 22
lib/Dist/Zilla/App/Command.pm 22
lib/Dist/Zilla/App/Tester.pm 33
lib/Dist/Zilla/App.pm 22
lib/Dist/Zilla/Chrome/Term.pm 22
lib/Dist/Zilla/Chrome/Test.pm 22
lib/Dist/Zilla/Config/Finder.pm 23
lib/Dist/Zilla/Config/Perl.pm 97
lib/Dist/Zilla/Config.pm 53
lib/Dist/Zilla/File/FromCode.pm 22
lib/Dist/Zilla/File/InMemory.pm 22
lib/Dist/Zilla/File/OnDisk.pm 22
lib/Dist/Zilla/Plugin/AutoPrereq.pm 22
lib/Dist/Zilla/Plugin/AutoVersion.pm 22
lib/Dist/Zilla/Plugin/BumpVersion.pm 22
lib/Dist/Zilla/Plugin/ConfirmRelease.pm 22
lib/Dist/Zilla/Plugin/DistINI.pm 213
lib/Dist/Zilla/Plugin/ExecDir.pm 22
lib/Dist/Zilla/Plugin/ExtraTests.pm 22
lib/Dist/Zilla/Plugin/FakeRelease.pm 22
lib/Dist/Zilla/Plugin/FinderCode.pm 22
lib/Dist/Zilla/Plugin/GatherDir/Template.pm 25
lib/Dist/Zilla/Plugin/GatherDir.pm 647
lib/Dist/Zilla/Plugin/GenerateFile.pm 33
lib/Dist/Zilla/Plugin/InlineFiles.pm 22
lib/Dist/Zilla/Plugin/License.pm 22
lib/Dist/Zilla/Plugin/MakeMaker.pm 933
lib/Dist/Zilla/Plugin/Manifest.pm 922
lib/Dist/Zilla/Plugin/ManifestSkip.pm 22
lib/Dist/Zilla/Plugin/MetaConfig.pm 22
lib/Dist/Zilla/Plugin/MetaJSON.pm 639
lib/Dist/Zilla/Plugin/MetaResources.pm 629
lib/Dist/Zilla/Plugin/MetaTests.pm 22
lib/Dist/Zilla/Plugin/MetaYAML.pm 642
lib/Dist/Zilla/Plugin/ModuleBuild.pm 717
lib/Dist/Zilla/Plugin/NextRelease.pm 22
lib/Dist/Zilla/Plugin/PkgVersion.pm 22
lib/Dist/Zilla/Plugin/PodCoverageTests.pm 22
lib/Dist/Zilla/Plugin/PodSyntaxTests.pm 22
lib/Dist/Zilla/Plugin/PodVersion.pm 22
lib/Dist/Zilla/Plugin/Prereq.pm 32
lib/Dist/Zilla/Plugin/PruneCruft.pm 22
lib/Dist/Zilla/Plugin/PruneFiles.pm 22
lib/Dist/Zilla/Plugin/Readme.pm 22
lib/Dist/Zilla/Plugin/ShareDir.pm 22
lib/Dist/Zilla/Plugin/TemplateModule.pm 226
lib/Dist/Zilla/Plugin/TestRelease.pm 22
lib/Dist/Zilla/Plugin/UploadToCPAN.pm 33
lib/Dist/Zilla/PluginBundle/Basic.pm 22
lib/Dist/Zilla/PluginBundle/Classic.pm 22
lib/Dist/Zilla/PluginBundle/FakeClassic.pm 22
lib/Dist/Zilla/PluginBundle/Filter.pm 22
lib/Dist/Zilla/Prereqs.pm 4070
lib/Dist/Zilla/Role/AfterBuild.pm 22
lib/Dist/Zilla/Role/AfterMint.pm 22
lib/Dist/Zilla/Role/AfterRelease.pm 22
lib/Dist/Zilla/Role/BeforeArchive.pm 22
lib/Dist/Zilla/Role/BeforeBuild.pm 22
lib/Dist/Zilla/Role/BeforeMint.pm 22
lib/Dist/Zilla/Role/BeforeRelease.pm 22
lib/Dist/Zilla/Role/BuildRunner.pm 22
lib/Dist/Zilla/Role/Chrome.pm 22
lib/Dist/Zilla/Role/ConfigDumper.pm 22
lib/Dist/Zilla/Role/ExecFiles.pm 22
lib/Dist/Zilla/Role/File.pm 22
lib/Dist/Zilla/Role/FileFinder.pm 22
lib/Dist/Zilla/Role/FileFinderUser.pm 22
lib/Dist/Zilla/Role/FileGatherer.pm 22
lib/Dist/Zilla/Role/FileInjector.pm 22
lib/Dist/Zilla/Role/FileMunger.pm 22
lib/Dist/Zilla/Role/FilePruner.pm 22
lib/Dist/Zilla/Role/InstallTool.pm 22
lib/Dist/Zilla/Role/MetaProvider.pm 22
lib/Dist/Zilla/Role/ModuleMaker.pm 33
lib/Dist/Zilla/Role/Plugin.pm 22
lib/Dist/Zilla/Role/PluginBundle/Easy.pm 22
lib/Dist/Zilla/Role/PluginBundle.pm 22
lib/Dist/Zilla/Role/PrereqSource.pm 22
lib/Dist/Zilla/Role/Releaser.pm 22
lib/Dist/Zilla/Role/ShareDir.pm 22
lib/Dist/Zilla/Role/TestRunner.pm 22
lib/Dist/Zilla/Role/TextTemplate.pm 22
lib/Dist/Zilla/Role/VersionProvider.pm 22
lib/Dist/Zilla/Tester.pm 22
lib/Dist/Zilla/Tutorial.pm 22
lib/Dist/Zilla/Types.pm 2813
lib/Dist/Zilla/Util/MVPAssembler.pm 22
lib/Dist/Zilla/Util.pm 33
lib/Dist/Zilla.pm 5161
t/lib/Test/DZil.pm 123
t/plugins/autoprereq.t 15
t/plugins/distmeta.t 43123
t/plugins/generatefile.t 85
t/plugins/manifest.t 064
t/plugins/metaresources.t 0172
112 files changed (This is a version diff) 5851242
@@ -1,5 +1,58 @@
 Revision history for Dist-Zilla
 
+3.101461  2010-05-26 22:34:18 America/New_York
+
+3.101460  2010-05-26 08:14:23 America/New_York
+          note required version of Config::MVP::Reader::INI
+
+          require a newer CPAN::Meta::Converter for laxer url validation
+
+3.101450  2010-05-25 18:18:09 America/New_York
+          compatibility with Config::MVP v1
+
+          merge test requires into build requires for MakeMaker
+
+          require a newer CPAN::Meta::Converter for custom key downgrades
+
+3.101421  2010-05-22 20:48:10 America/New_York
+          note the new version of CPAN::Meta::Converter required
+
+3.101410  2010-05-21 22:17:44 America/New_York
+          cope with newest Config::MVP
+
+3.101400  2010-05-20 11:30:41 America/New_York
+          ModuleBuild now uses $^X to run Build (Christian Walde)
+          
+          MakeMaker now uses the "make" program found in Config (Christian
+          Walde)
+
+3.101390  2010-05-19 09:15:32 America/New_York
+          INCOMPATIBLE CHANGES:
+
+          the as_distmeta method of Prereqs is removed
+
+          the ->prereq method on Dist::Zilla is gone (only prereqs remains)
+
+          distmeta is managed by CPAN::Meta, which expects v2 spec data by
+          default
+
+          most Dist::Zilla::Types are gone, now in MooseX::Types::Perl
+
+          OTHER CHANGES:
+
+          META.json and META.yml are now produced by CPAN::Meta
+
+          Dist::Zilla::Prereqs now proxies for CPAN::Meta::Prereqs
+
+          MetaResources supports CPAN Meta Spec version 2, but still works
+            with old-style resources as well (Dave Rolsky)
+
+          quote filenames with spaces in MANIFEST (Dave Rolsky)
+
+          Manifest plugin is now a FileGatherer, not an InstallTool
+
+          attempted a fix for `dzil install` on Win32 (RT #57404)
+
 2.101310  2010-05-11 09:02:45 America/New_York
           update_filename arg added to NextRelease
           `dzil new` can now be given a module name instead of dist name
@@ -135,6 +135,8 @@ t/plugins/generatefile.t
 t/plugins/installdirs.t
 t/plugins/license.t
 t/plugins/makemaker.t
+t/plugins/manifest.t
+t/plugins/metaresources.t
 t/plugins/misctests.t
 t/plugins/modulebuild.t
 t/plugins/nextrelease.t
@@ -156,4 +158,4 @@ todo/prereq-command.mkdn
 todo/register-on-fly.mkdn
 todo/test-upstream.mkdn
 todo/version-from-prev.mkdn
-todo/xs-improvement.mkdn
\ No newline at end of file
+todo/xs-improvement.mkdn
@@ -3,18 +3,12 @@
    "author" : [
       "Ricardo SIGNES <rjbs@cpan.org>"
    ],
-   "build_requires" : {
-      "Test::More" : "0.90",
-      "Try::Tiny" : "0"
-   },
-   "configure_requires" : {
-      "ExtUtils::MakeMaker" : "6.31"
-   },
-   "generated_by" : "Dist::Zilla version 2.101310",
-   "license" : "perl",
+   "dynamic_config" : 0,
+   "generated_by" : "Dist::Zilla version 3.101461",
+   "license" : "perl_5",
    "meta-spec" : {
-      "url" : "http://module-build.sourceforge.net/META-spec-v1.4.html",
-      "version" : 1.4
+      "url" : "http://github.com/dagolden/cpan-meta/",
+      "version" : 2
    },
    "name" : "Dist-Zilla",
    "no_index" : {
@@ -22,185 +16,205 @@
          "corpus"
       ]
    },
-   "recommends" : {},
-   "requires" : {
-      "App::Cmd::Setup" : "0.307",
-      "App::Cmd::Tester" : "0.306",
-      "Archive::Tar" : "0",
-      "CPAN::Uploader" : "0.100660",
-      "Carp" : "0",
-      "Config::MVP" : "0.100780",
-      "Config::MVP::Assembler" : "0",
-      "Config::MVP::Assembler::WithBundles" : "0",
-      "Config::MVP::Reader" : "0",
-      "Config::MVP::Reader::Findable" : "0",
-      "Config::MVP::Reader::Finder" : "0",
-      "Config::MVP::Reader::INI" : "0",
-      "Data::Dumper" : "0",
-      "Data::Section" : "0.004",
-      "DateTime" : "0.44",
-      "ExtUtils::MakeMaker" : "0",
-      "ExtUtils::Manifest" : "1.54",
-      "File::Copy::Recursive" : "0",
-      "File::Find::Rule" : "0",
-      "File::HomeDir" : "0",
-      "File::Path" : "0",
-      "File::ShareDir::Install" : "0.03",
-      "File::Spec" : "0",
-      "File::Temp" : "0",
-      "File::pushd" : "0",
-      "Hash::Merge::Simple" : "0",
-      "JSON" : "2",
-      "List::MoreUtils" : "0",
-      "List::Util" : "0",
-      "Log::Dispatchouli" : "1.100712",
-      "Moose" : "0.92",
-      "Moose::Autobox" : "0.09",
-      "Moose::Role" : "0",
-      "Moose::Util::TypeConstraints" : "0",
-      "MooseX::Role::Parameterized" : "0",
-      "MooseX::Types" : "0",
-      "MooseX::Types::Moose" : "0",
-      "MooseX::Types::Path::Class" : "0",
-      "PPI" : "0",
-      "Params::Util" : "0",
-      "Path::Class" : "0",
-      "Perl::PrereqScanner" : "0.100830",
-      "Perl::Version" : "0",
-      "Pod::Eventual" : "0.091480",
-      "Scalar::Util" : "0",
-      "Software::License" : "0",
-      "Software::LicenseUtils" : "0",
-      "String::Formatter" : "0.100680",
-      "String::RewritePrefix" : "0.005",
-      "Sub::Exporter" : "0",
-      "Sub::Exporter::Util" : "0",
-      "Text::Template" : "0",
-      "Version::Requirements" : "0.100630",
-      "YAML::Tiny" : "0",
-      "autobox" : "2.53",
-      "autodie" : "0",
-      "namespace::autoclean" : "0",
-      "perl" : "v5.8.5",
-      "version" : "0.82"
+   "prereqs" : {
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "6.31"
+         }
+      },
+      "runtime" : {
+         "requires" : {
+            "App::Cmd::Setup" : "0.307",
+            "App::Cmd::Tester" : "0.306",
+            "Archive::Tar" : "0",
+            "CPAN::Meta::Converter" : "2.101460",
+            "CPAN::Meta::Prereqs" : "2.101390",
+            "CPAN::Uploader" : "0.100660",
+            "Carp" : "0",
+            "Config" : "0",
+            "Config::MVP" : "2",
+            "Config::MVP::Assembler" : "0",
+            "Config::MVP::Assembler::WithBundles" : "0",
+            "Config::MVP::Reader" : "2",
+            "Config::MVP::Reader::Findable::ByExtension" : "0",
+            "Config::MVP::Reader::Finder" : "0",
+            "Config::MVP::Reader::INI" : "2",
+            "Data::Dumper" : "0",
+            "Data::Section" : "0.004",
+            "DateTime" : "0.44",
+            "ExtUtils::MakeMaker" : "0",
+            "ExtUtils::Manifest" : "1.54",
+            "File::Copy::Recursive" : "0",
+            "File::Find::Rule" : "0",
+            "File::HomeDir" : "0",
+            "File::Path" : "0",
+            "File::ShareDir::Install" : "0.03",
+            "File::Spec" : "0",
+            "File::Temp" : "0",
+            "File::pushd" : "0",
+            "Hash::Merge::Simple" : "0",
+            "JSON" : "2",
+            "List::MoreUtils" : "0",
+            "List::Util" : "0",
+            "Log::Dispatchouli" : "1.100712",
+            "Moose" : "0.92",
+            "Moose::Autobox" : "0.09",
+            "Moose::Role" : "0",
+            "Moose::Util::TypeConstraints" : "0",
+            "MooseX::Role::Parameterized" : "0",
+            "MooseX::Types" : "0",
+            "MooseX::Types::Moose" : "0",
+            "MooseX::Types::Path::Class" : "0",
+            "MooseX::Types::Perl" : "0",
+            "PPI" : "0",
+            "Params::Util" : "0",
+            "Path::Class" : "0",
+            "Perl::PrereqScanner" : "0.100830",
+            "Perl::Version" : "0",
+            "Pod::Eventual" : "0.091480",
+            "Scalar::Util" : "0",
+            "Software::License" : "0.101370",
+            "Software::LicenseUtils" : "0",
+            "String::Formatter" : "0.100680",
+            "String::RewritePrefix" : "0.005",
+            "Sub::Exporter" : "0",
+            "Sub::Exporter::Util" : "0",
+            "Text::Template" : "0",
+            "Version::Requirements" : "0.100630",
+            "YAML::Tiny" : "0",
+            "autobox" : "2.53",
+            "autodie" : "0",
+            "namespace::autoclean" : "0",
+            "perl" : "v5.8.5",
+            "version" : "0"
+         }
+      },
+      "test" : {
+         "requires" : {
+            "Test::More" : "0.90",
+            "Try::Tiny" : "0"
+         }
+      }
    },
    "resources" : {
       "MailingList" : "http://www.listbox.com/subscribe/?list_id=139292",
       "homepage" : "http://dzil.org/",
-      "repository" : "http://github.com/rjbs/dist-zilla"
+      "repository" : {
+         "url" : "http://github.com/rjbs/dist-zilla"
+      }
    },
-   "version" : "2.101310",
+   "version" : "3.101461",
    "x_Dist_Zilla" : {
       "plugins" : [
          {
             "class" : "Dist::Zilla::Plugin::GatherDir",
             "name" : "@RJBS/@Basic/GatherDir",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::PruneCruft",
             "name" : "@RJBS/@Basic/PruneCruft",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::ManifestSkip",
             "name" : "@RJBS/@Basic/ManifestSkip",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaYAML",
             "name" : "@RJBS/@Basic/MetaYAML",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::License",
             "name" : "@RJBS/@Basic/License",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::Readme",
             "name" : "@RJBS/@Basic/Readme",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::ExtraTests",
             "name" : "@RJBS/@Basic/ExtraTests",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::ExecDir",
             "name" : "@RJBS/@Basic/ExecDir",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::ShareDir",
             "name" : "@RJBS/@Basic/ShareDir",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::MakeMaker",
             "name" : "@RJBS/@Basic/MakeMaker",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::Manifest",
             "name" : "@RJBS/@Basic/Manifest",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::TestRelease",
             "name" : "@RJBS/@Basic/TestRelease",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::ConfirmRelease",
             "name" : "@RJBS/@Basic/ConfirmRelease",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::UploadToCPAN",
             "name" : "@RJBS/@Basic/UploadToCPAN",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::AutoPrereq",
             "name" : "@RJBS/AutoPrereq",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::AutoVersion",
             "name" : "@RJBS/AutoVersion",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::PkgVersion",
             "name" : "@RJBS/PkgVersion",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaConfig",
             "name" : "@RJBS/MetaConfig",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaJSON",
             "name" : "@RJBS/MetaJSON",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::NextRelease",
             "name" : "@RJBS/NextRelease",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::PodSyntaxTests",
             "name" : "@RJBS/PodSyntaxTests",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::Repository",
             "name" : "@RJBS/Repository",
-            "version" : "0.12"
+            "version" : "0.13"
          },
          {
             "class" : "Dist::Zilla::Plugin::PodWeaver",
@@ -210,22 +224,22 @@
          {
             "class" : "Dist::Zilla::Plugin::Git::Check",
             "name" : "@RJBS/@Git/Check",
-            "version" : "1.101270"
+            "version" : "1.101330"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Commit",
             "name" : "@RJBS/@Git/Commit",
-            "version" : "1.101270"
+            "version" : "1.101330"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Tag",
             "name" : "@RJBS/@Git/Tag",
-            "version" : "1.101270"
+            "version" : "1.101330"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Push",
             "name" : "@RJBS/@Git/Push",
-            "version" : "1.101270"
+            "version" : "1.101330"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaNoIndex",
@@ -235,18 +249,18 @@
          {
             "class" : "Dist::Zilla::Plugin::MetaResources",
             "name" : "MetaResources",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereq",
             "config" : {
                "Dist::Zilla::Plugin::Prereq" : {
-                  "phase" : "build",
+                  "phase" : "test",
                   "type" : "requires"
                }
             },
             "name" : "TestRequires",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereq",
@@ -257,32 +271,32 @@
                }
             },
             "name" : "Prereq",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "inc::Dist::Zilla::Plugin::VersionBootstrap",
             "name" : "VersionBootstrap",
-            "version" : "2.101310"
+            "version" : "3.101461"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":InstallModules",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":TestFiles",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":ExecFiles",
-            "version" : "2.101310"
+            "version" : "3.101460"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":ShareFiles",
-            "version" : "2.101310"
+            "version" : "3.101460"
          }
       ],
       "zilla" : {
@@ -290,7 +304,7 @@
          "config" : {
             "is_trial" : 0
          },
-         "version" : "2.101310"
+         "version" : "3.101461"
       }
    }
 }
@@ -7,7 +7,8 @@ build_requires:
   Try::Tiny: 0
 configure_requires:
   ExtUtils::MakeMaker: 6.31
-generated_by: 'Dist::Zilla version 2.101310'
+dynamic_config: 0
+generated_by: 'Dist::Zilla version 3.101461, CPAN::Meta::Converter version 2.101460'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -16,20 +17,22 @@ name: Dist-Zilla
 no_index:
   directory:
     - corpus
-recommends: {}
 requires:
   App::Cmd::Setup: 0.307
   App::Cmd::Tester: 0.306
   Archive::Tar: 0
+  CPAN::Meta::Converter: 2.101460
+  CPAN::Meta::Prereqs: 2.101390
   CPAN::Uploader: 0.100660
   Carp: 0
-  Config::MVP: 0.100780
+  Config: 0
+  Config::MVP: 2
   Config::MVP::Assembler: 0
   Config::MVP::Assembler::WithBundles: 0
-  Config::MVP::Reader: 0
-  Config::MVP::Reader::Findable: 0
+  Config::MVP::Reader: 2
+  Config::MVP::Reader::Findable::ByExtension: 0
   Config::MVP::Reader::Finder: 0
-  Config::MVP::Reader::INI: 0
+  Config::MVP::Reader::INI: 2
   Data::Dumper: 0
   Data::Section: 0.004
   DateTime: 0.44
@@ -56,6 +59,7 @@ requires:
   MooseX::Types: 0
   MooseX::Types::Moose: 0
   MooseX::Types::Path::Class: 0
+  MooseX::Types::Perl: 0
   PPI: 0
   Params::Util: 0
   Path::Class: 0
@@ -63,7 +67,7 @@ requires:
   Perl::Version: 0
   Pod::Eventual: 0.091480
   Scalar::Util: 0
-  Software::License: 0
+  Software::License: 0.101370
   Software::LicenseUtils: 0
   String::Formatter: 0.100680
   String::RewritePrefix: 0.005
@@ -76,102 +80,102 @@ requires:
   autodie: 0
   namespace::autoclean: 0
   perl: v5.8.5
-  version: 0.82
+  version: 0
 resources:
   MailingList: http://www.listbox.com/subscribe/?list_id=139292
   homepage: http://dzil.org/
   repository: http://github.com/rjbs/dist-zilla
-version: 2.101310
+version: 3.101461
 x_Dist_Zilla:
   plugins:
     -
       class: Dist::Zilla::Plugin::GatherDir
       name: '@RJBS/@Basic/GatherDir'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::PruneCruft
       name: '@RJBS/@Basic/PruneCruft'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::ManifestSkip
       name: '@RJBS/@Basic/ManifestSkip'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::MetaYAML
       name: '@RJBS/@Basic/MetaYAML'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::License
       name: '@RJBS/@Basic/License'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::Readme
       name: '@RJBS/@Basic/Readme'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::ExtraTests
       name: '@RJBS/@Basic/ExtraTests'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::ExecDir
       name: '@RJBS/@Basic/ExecDir'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::ShareDir
       name: '@RJBS/@Basic/ShareDir'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::MakeMaker
       name: '@RJBS/@Basic/MakeMaker'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::Manifest
       name: '@RJBS/@Basic/Manifest'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::TestRelease
       name: '@RJBS/@Basic/TestRelease'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::ConfirmRelease
       name: '@RJBS/@Basic/ConfirmRelease'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::UploadToCPAN
       name: '@RJBS/@Basic/UploadToCPAN'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::AutoPrereq
       name: '@RJBS/AutoPrereq'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::AutoVersion
       name: '@RJBS/AutoVersion'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::PkgVersion
       name: '@RJBS/PkgVersion'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::MetaConfig
       name: '@RJBS/MetaConfig'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::MetaJSON
       name: '@RJBS/MetaJSON'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::NextRelease
       name: '@RJBS/NextRelease'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::PodSyntaxTests
       name: '@RJBS/PodSyntaxTests'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::Repository
       name: '@RJBS/Repository'
-      version: 0.12
+      version: 0.13
     -
       class: Dist::Zilla::Plugin::PodWeaver
       name: '@RJBS/PodWeaver'
@@ -179,19 +183,19 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::Git::Check
       name: '@RJBS/@Git/Check'
-      version: 1.101270
+      version: 1.101330
     -
       class: Dist::Zilla::Plugin::Git::Commit
       name: '@RJBS/@Git/Commit'
-      version: 1.101270
+      version: 1.101330
     -
       class: Dist::Zilla::Plugin::Git::Tag
       name: '@RJBS/@Git/Tag'
-      version: 1.101270
+      version: 1.101330
     -
       class: Dist::Zilla::Plugin::Git::Push
       name: '@RJBS/@Git/Push'
-      version: 1.101270
+      version: 1.101330
     -
       class: Dist::Zilla::Plugin::MetaNoIndex
       name: MetaNoIndex
@@ -199,15 +203,15 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::MetaResources
       name: MetaResources
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::Prereq
       config:
         Dist::Zilla::Plugin::Prereq:
-          phase: build
+          phase: test
           type: requires
       name: TestRequires
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::Prereq
       config:
@@ -215,29 +219,29 @@ x_Dist_Zilla:
           phase: runtime
           type: requires
       name: Prereq
-      version: 2.101310
+      version: 3.101460
     -
       class: inc::Dist::Zilla::Plugin::VersionBootstrap
       name: VersionBootstrap
-      version: 2.101310
+      version: 3.101461
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':InstallModules'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':TestFiles'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':ExecFiles'
-      version: 2.101310
+      version: 3.101460
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':ShareFiles'
-      version: 2.101310
+      version: 3.101460
   zilla:
     class: Dist::Zilla
     config:
       is_trial: 0
-    version: 2.101310
+    version: 3.101461
@@ -28,15 +28,18 @@ my %WriteMakefileArgs = (
     'App::Cmd::Setup' => '0.307',
     'App::Cmd::Tester' => '0.306',
     'Archive::Tar' => '0',
+    'CPAN::Meta::Converter' => '2.101460',
+    'CPAN::Meta::Prereqs' => '2.101390',
     'CPAN::Uploader' => '0.100660',
     'Carp' => '0',
-    'Config::MVP' => '0.100780',
+    'Config' => '0',
+    'Config::MVP' => '2',
     'Config::MVP::Assembler' => '0',
     'Config::MVP::Assembler::WithBundles' => '0',
-    'Config::MVP::Reader' => '0',
-    'Config::MVP::Reader::Findable' => '0',
+    'Config::MVP::Reader' => '2',
+    'Config::MVP::Reader::Findable::ByExtension' => '0',
     'Config::MVP::Reader::Finder' => '0',
-    'Config::MVP::Reader::INI' => '0',
+    'Config::MVP::Reader::INI' => '2',
     'Data::Dumper' => '0',
     'Data::Section' => '0.004',
     'DateTime' => '0.44',
@@ -63,6 +66,7 @@ my %WriteMakefileArgs = (
     'MooseX::Types' => '0',
     'MooseX::Types::Moose' => '0',
     'MooseX::Types::Path::Class' => '0',
+    'MooseX::Types::Perl' => '0',
     'PPI' => '0',
     'Params::Util' => '0',
     'Path::Class' => '0',
@@ -70,7 +74,7 @@ my %WriteMakefileArgs = (
     'Perl::Version' => '0',
     'Pod::Eventual' => '0.091480',
     'Scalar::Util' => '0',
-    'Software::License' => '0',
+    'Software::License' => '0.101370',
     'Software::LicenseUtils' => '0',
     'String::Formatter' => '0.100680',
     'String::RewritePrefix' => '0.005',
@@ -82,9 +86,9 @@ my %WriteMakefileArgs = (
     'autobox' => '2.53',
     'autodie' => '0',
     'namespace::autoclean' => '0',
-    'version' => '0.82'
+    'version' => '0'
   },
-  'VERSION' => '2.101310',
+  'VERSION' => '3.101461',
   'test' => {
     'TESTS' => 't/*.t t/plugins/*.t'
   }
@@ -1,7 +1,7 @@
 
 
 This archive contains the distribution Dist-Zilla,
-version 2.101310:
+version 3.101461:
 
   distribution builder; installer not included!
 
@@ -10,3 +10,4 @@ copyright_year   = 2009
 [AutoPrereq]
 skip = ^DZPA::Skip
 [MetaYAML]
+version = 2
@@ -4,7 +4,7 @@ license = Perl_5
 copyright_holder = Ricardo SIGNES
 
 [@RJBS]
-version = 2
+version = 3
 
 [MetaNoIndex]
 dir = corpus
@@ -21,8 +21,8 @@ Test::More = 0.90
 perl    = v5.8.5 ; how tempted am I to set this to v5.10?  very!
 autobox = 2.53  ; @array->method support, portability
 
-Config::MVP::Reader::INI = 0     ; ensure there's a basic, sane config format
-File::ShareDir::Install  = 0.03  ; for EUMM
+Config::MVP::Reader::INI = 2    ; ensure there's a basic config format
+File::ShareDir::Install  = 0.03 ; for EUMM
 
 ; We need this to bootstrap a version into Dist::Zilla while running, so that
 ; it can inject its version number into "generated by" strings. -- rjbs
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 package Dist::Zilla::App::Command::build;
 BEGIN {
-  $Dist::Zilla::App::Command::build::VERSION = '2.101310';
+  $Dist::Zilla::App::Command::build::VERSION = '3.101461';
 }
 # ABSTRACT: build your dist
 use Dist::Zilla::App -command;
@@ -37,7 +37,7 @@ Dist::Zilla::App::Command::build - build your dist
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 package Dist::Zilla::App::Command::clean;
 BEGIN {
-  $Dist::Zilla::App::Command::clean::VERSION = '2.101310';
+  $Dist::Zilla::App::Command::clean::VERSION = '3.101461';
 }
 # ABSTRACT: clean up after build, test, or install
 use Dist::Zilla::App -command;
@@ -29,7 +29,7 @@ Dist::Zilla::App::Command::clean - clean up after build, test, or install
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 package Dist::Zilla::App::Command::install;
 BEGIN {
-  $Dist::Zilla::App::Command::install::VERSION = '2.101310';
+  $Dist::Zilla::App::Command::install::VERSION = '3.101461';
 }
 # ABSTRACT: install your dist
 use Dist::Zilla::App -command;
@@ -34,7 +34,7 @@ Dist::Zilla::App::Command::install - install your dist
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 package Dist::Zilla::App::Command::listdeps;
 BEGIN {
-  $Dist::Zilla::App::Command::listdeps::VERSION = '2.101310';
+  $Dist::Zilla::App::Command::listdeps::VERSION = '3.101461';
 }
 use Dist::Zilla::App -command;
 # ABSTRACT: print your distribution's prerequisites
@@ -28,11 +28,10 @@ sub execute {
   $_->register_prereqs for $self->zilla->plugins_with(-PrereqSource)->flatten;
 
   my $req = Version::Requirements->new;
-  my $prereq = $self->zilla->prereq->as_distmeta;
+  my $prereqs = $self->zilla->prereqs;
 
-  for my $type (qw(requires build_requires configure_requires)) {
-    $req->add_minimum($_ => $prereq->{ $type }{$_})
-      for keys %{ $prereq->{$type} };
+  for my $phase (qw(build test configure runtime)) {
+    $req->add_requirements( $prereqs->requirements_for($phase, 'requires') );
   }
 
   print "$_\n" for sort { lc $a cmp lc $b }
@@ -52,7 +51,7 @@ Dist::Zilla::App::Command::listdeps - print your distribution's prerequisites
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -2,18 +2,20 @@ use strict;
 use warnings;
 package Dist::Zilla::App::Command::new;
 BEGIN {
-  $Dist::Zilla::App::Command::new::VERSION = '2.101310';
+  $Dist::Zilla::App::Command::new::VERSION = '3.101461';
 }
 # ABSTRACT: start a new dist
 use Dist::Zilla::App -command;
 
 
-use Dist::Zilla::Types qw(DistName ModuleName);
+use MooseX::Types::Perl qw(DistName ModuleName);
 use Moose::Autobox;
 use Path::Class;
 
 sub abstract { 'start a new dist' }
 
+sub usage_desc { '%c %o <DistName>' }
+
 sub validate_args {
   my ($self, $opt, $args) = @_;
 
@@ -63,7 +65,7 @@ Dist::Zilla::App::Command::new - start a new dist
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 package Dist::Zilla::App::Command::nop;
 BEGIN {
-  $Dist::Zilla::App::Command::nop::VERSION = '2.101310';
+  $Dist::Zilla::App::Command::nop::VERSION = '3.101461';
 }
 # ABSTRACT: initialize dzil, then exit
 use Dist::Zilla::App -command;
@@ -30,7 +30,7 @@ Dist::Zilla::App::Command::nop - initialize dzil, then exit
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 package Dist::Zilla::App::Command::release;
 BEGIN {
-  $Dist::Zilla::App::Command::release::VERSION = '2.101310';
+  $Dist::Zilla::App::Command::release::VERSION = '3.101461';
 }
 # ABSTRACT: release your dist to the CPAN
 use Dist::Zilla::App -command;
@@ -35,7 +35,7 @@ Dist::Zilla::App::Command::release - release your dist to the CPAN
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -3,7 +3,7 @@ use warnings;
 
 package Dist::Zilla::App::Command::run;
 BEGIN {
-  $Dist::Zilla::App::Command::run::VERSION = '2.101310';
+  $Dist::Zilla::App::Command::run::VERSION = '3.101461';
 }
 # ABSTRACT: run stuff in a dir where your dist is built
 
@@ -29,7 +29,7 @@ Dist::Zilla::App::Command::run - run stuff in a dir where your dist is built
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 package Dist::Zilla::App::Command::smoke;
 BEGIN {
-  $Dist::Zilla::App::Command::smoke::VERSION = '2.101310';
+  $Dist::Zilla::App::Command::smoke::VERSION = '3.101461';
 }
 # ABSTRACT: smoke your dist
 use Dist::Zilla::App -command;
@@ -31,7 +31,7 @@ Dist::Zilla::App::Command::smoke - smoke your dist
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 package Dist::Zilla::App::Command::test;
 BEGIN {
-  $Dist::Zilla::App::Command::test::VERSION = '2.101310';
+  $Dist::Zilla::App::Command::test::VERSION = '3.101461';
 }
 # ABSTRACT: test your dist
 use Dist::Zilla::App -command;
@@ -29,7 +29,7 @@ Dist::Zilla::App::Command::test - test your dist
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 package Dist::Zilla::App::Command;
 BEGIN {
-  $Dist::Zilla::App::Command::VERSION = '2.101310';
+  $Dist::Zilla::App::Command::VERSION = '3.101461';
 }
 # ABSTRACT: base class for dzil commands
 use App::Cmd::Setup -command;
@@ -35,7 +35,7 @@ Dist::Zilla::App::Command - base class for dzil commands
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 METHODS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::App::Tester;
 BEGIN {
-  $Dist::Zilla::App::Tester::VERSION = '2.101310';
+  $Dist::Zilla::App::Tester::VERSION = '3.101461';
 }
 use base 'App::Cmd::Tester';
 use App::Cmd::Tester 0.306 (); # result_class, ->app
@@ -45,7 +45,7 @@ sub test_dzil {
 {
   package Dist::Zilla::App::Tester::Result;
 BEGIN {
-  $Dist::Zilla::App::Tester::Result::VERSION = '2.101310';
+  $Dist::Zilla::App::Tester::Result::VERSION = '3.101461';
 }
   BEGIN { our @ISA = qw(App::Cmd::Tester::Result); }
 
@@ -92,7 +92,7 @@ Dist::Zilla::App::Tester - testing library for Dist::Zilla::App
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 package Dist::Zilla::App;
 BEGIN {
-  $Dist::Zilla::App::VERSION = '2.101310';
+  $Dist::Zilla::App::VERSION = '3.101461';
 }
 # ABSTRACT: Dist::Zilla's App::Cmd
 use App::Cmd::Setup 0.307 -app; # need ->app in Result of Tester, GLD vers
@@ -89,7 +89,7 @@ Dist::Zilla::App - Dist::Zilla's App::Cmd
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 METHODS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Chrome::Term;
 BEGIN {
-  $Dist::Zilla::Chrome::Term::VERSION = '2.101310';
+  $Dist::Zilla::Chrome::Term::VERSION = '3.101461';
 }
 use Moose;
 # ABSTRACT: chrome used for terminal-based interaction
@@ -35,7 +35,7 @@ Dist::Zilla::Chrome::Term - chrome used for terminal-based interaction
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Chrome::Test;
 BEGIN {
-  $Dist::Zilla::Chrome::Test::VERSION = '2.101310';
+  $Dist::Zilla::Chrome::Test::VERSION = '3.101461';
 }
 use Moose;
 # ABSTRACT: the chrome used by Dist::Zilla::Tester
@@ -30,7 +30,7 @@ Dist::Zilla::Chrome::Test - the chrome used by Dist::Zilla::Tester
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -1,8 +1,9 @@
 package Dist::Zilla::Config::Finder;
 BEGIN {
-  $Dist::Zilla::Config::Finder::VERSION = '2.101310';
+  $Dist::Zilla::Config::Finder::VERSION = '3.101461';
 }
 use Moose;
+use Config::MVP::Reader 2;
 extends 'Config::MVP::Reader::Finder';
 with 'Dist::Zilla::Config';
 # ABSTRACT: the reader for dist.ini files
@@ -26,7 +27,7 @@ Dist::Zilla::Config::Finder - the reader for dist.ini files
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -1,22 +1,20 @@
 package Dist::Zilla::Config::Perl;
 BEGIN {
-  $Dist::Zilla::Config::Perl::VERSION = '2.101310';
+  $Dist::Zilla::Config::Perl::VERSION = '3.101461';
 }
 use Moose;
-with qw(Config::MVP::Reader::Findable);
+extends 'Config::MVP::Reader';
+with qw(Config::MVP::Reader::Findable::ByExtension);
 with qw(Dist::Zilla::Config);
 # ABSTRACT: the reader for dist.pl files
 
 
 sub default_extension { 'pl' }
 
-sub read_config {
-  my ($self, $arg) = @_;
-  my $config_file = $self->filename_from_args($arg);
+sub read_into_assembler {
+  my ($self, $location, $asm) = @_;
 
-  my $asm = $self->assembler;
-
-  my @input = do $config_file;
+  my @input = do $location;
   while (@input and ! ref $input[0]) {
     my ($key, $value) = (shift(@input), shift(@input));
     $asm->add_value($key => $value);
@@ -59,7 +57,7 @@ Dist::Zilla::Config::Perl - the reader for dist.pl files
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,13 +1,11 @@
 package Dist::Zilla::Config;
 BEGIN {
-  $Dist::Zilla::Config::VERSION = '2.101310';
+  $Dist::Zilla::Config::VERSION = '3.101461';
 }
 use Moose::Role;
 # ABSTRACT: stored configuration loader role
 
-use Config::MVP 0.100780; # fix mvp_* method laziness
-
-with q(Config::MVP::Reader) => { -excludes => 'build_assembler' };
+use Config::MVP 2; # finalization and what not
 
 use Dist::Zilla::Util::MVPAssembler;
 
@@ -38,7 +36,7 @@ Dist::Zilla::Config - stored configuration loader role
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::File::FromCode;
 BEGIN {
-  $Dist::Zilla::File::FromCode::VERSION = '2.101310';
+  $Dist::Zilla::File::FromCode::VERSION = '3.101461';
 }
 # ABSTRACT: a file whose content is (re-)built on demand
 use Moose;
@@ -35,7 +35,7 @@ Dist::Zilla::File::FromCode - a file whose content is (re-)built on demand
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::File::InMemory;
 BEGIN {
-  $Dist::Zilla::File::InMemory::VERSION = '2.101310';
+  $Dist::Zilla::File::InMemory::VERSION = '3.101461';
 }
 # ABSTRACT: a file that you build entirely in memory
 use Moose;
@@ -26,7 +26,7 @@ Dist::Zilla::File::InMemory - a file that you build entirely in memory
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::File::OnDisk;
 BEGIN {
-  $Dist::Zilla::File::OnDisk::VERSION = '2.101310';
+  $Dist::Zilla::File::OnDisk::VERSION = '3.101461';
 }
 # ABSTRACT: a file that comes from your filesystem
 use Moose;
@@ -47,7 +47,7 @@ Dist::Zilla::File::OnDisk - a file that comes from your filesystem
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::AutoPrereq;
 BEGIN {
-  $Dist::Zilla::Plugin::AutoPrereq::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::AutoPrereq::VERSION = '3.101461';
 }
 use Moose;
 with(
@@ -106,7 +106,7 @@ Dist::Zilla::Plugin::AutoPrereq - automatically extract prereqs from your module
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::AutoVersion;
 BEGIN {
-  $Dist::Zilla::Plugin::AutoVersion::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::AutoVersion::VERSION = '3.101461';
 }
 # ABSTRACT: take care of numbering versions so you don't have to
 use Moose;
@@ -68,7 +68,7 @@ Dist::Zilla::Plugin::AutoVersion - take care of numbering versions so you don't
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::BumpVersion;
 BEGIN {
-  $Dist::Zilla::Plugin::BumpVersion::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::BumpVersion::VERSION = '3.101461';
 }
 # ABSTRACT: bump the configured version number by one before building
 use Moose;
@@ -40,7 +40,7 @@ Dist::Zilla::Plugin::BumpVersion - bump the configured version number by one bef
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::ConfirmRelease;
 BEGIN {
-  $Dist::Zilla::Plugin::ConfirmRelease::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::ConfirmRelease::VERSION = '3.101461';
 }
 # ABSTRACT: prompt for confirmation before releasing
 
@@ -40,7 +40,7 @@ Dist::Zilla::Plugin::ConfirmRelease - prompt for confirmation before releasing
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::DistINI;
 BEGIN {
-  $Dist::Zilla::Plugin::DistINI::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::DistINI::VERSION = '3.101461';
 }
 # ABSTRACT: a plugin to add a dist.ini to newly-minted dists
 use Moose;
@@ -8,6 +8,7 @@ with qw(Dist::Zilla::Role::FileGatherer);
 
 use Dist::Zilla::File::InMemory;
 
+
 sub gather_files {
   my ($self, $arg) = @_;
 
@@ -49,7 +50,17 @@ Dist::Zilla::Plugin::DistINI - a plugin to add a dist.ini to newly-minted dists
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
+
+=head1 DESCRIPTION
+
+This plugins produces a F<dist.ini> file in a new dist, specifying the required
+core attributes from the dist being minted.
+
+This plugin is dead simple and pretty stupid, but should get better as dist
+minting facilities improve.  For example, it will not specify any plugins.
+
+In the meantime, you may be happier with a F<dist.ini> template.
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::ExecDir;
 BEGIN {
-  $Dist::Zilla::Plugin::ExecDir::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::ExecDir::VERSION = '3.101461';
 }
 # ABSTRACT: install a directory's contents as executables
 use Moose;
@@ -35,7 +35,7 @@ Dist::Zilla::Plugin::ExecDir - install a directory's contents as executables
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::ExtraTests;
 BEGIN {
-  $Dist::Zilla::Plugin::ExtraTests::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::ExtraTests::VERSION = '3.101461';
 }
 # ABSTRACT: rewrite ./xt tests to ./t tests with skips
 use Moose;
@@ -67,7 +67,7 @@ Dist::Zilla::Plugin::ExtraTests - rewrite ./xt tests to ./t tests with skips
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::FakeRelease;
 BEGIN {
-  $Dist::Zilla::Plugin::FakeRelease::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::FakeRelease::VERSION = '3.101461';
 }
 # ABSTRACT: fake plugin to test release
 
@@ -41,7 +41,7 @@ Dist::Zilla::Plugin::FakeRelease - fake plugin to test release
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::FinderCode;
 BEGIN {
-  $Dist::Zilla::Plugin::FinderCode::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::FinderCode::VERSION = '3.101461';
 }
 use Moose;
 with 'Dist::Zilla::Role::FileFinder';
@@ -54,7 +54,7 @@ Dist::Zilla::Plugin::FinderCode - a callback-based FileFinder plugin
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::GatherDir::Template;
 BEGIN {
-  $Dist::Zilla::Plugin::GatherDir::Template::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::GatherDir::Template::VERSION = '3.101461';
 }
 # ABSTRACT: gather all the files in a directory and use them as templates
 use Moose;
@@ -51,7 +51,7 @@ Dist::Zilla::Plugin::GatherDir::Template - gather all the files in a directory a
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -60,6 +60,9 @@ It looks in the directory named in the L</root> attribute and adds all the
 files it finds there.  If the root begins with a tilde, the tilde is replaced
 with the current user's home directory according to L<File::HomeDir>.
 
+It is meant to be used when minting dists with C<dzil new>, but could be used
+in building existing dists, too.
+
 =head1 AUTHOR
 
   Ricardo SIGNES <rjbs@cpan.org>
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::GatherDir;
 BEGIN {
-  $Dist::Zilla::Plugin::GatherDir::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::GatherDir::VERSION = '3.101461';
 }
 # ABSTRACT: gather all the files in a directory
 use Moose;
@@ -16,6 +16,7 @@ use Path::Class;
 
 use namespace::autoclean;
 
+
 has root => (
   is   => 'ro',
   isa  => Dir,
@@ -25,12 +26,14 @@ has root => (
   default  => sub { shift->zilla->root },
 );
 
+
 has prefix => (
   is  => 'ro',
   isa => 'Str',
   default => '',
 );
 
+
 has include_dotfiles => (
   is  => 'ro',
   isa => 'Bool',
@@ -88,14 +91,52 @@ Dist::Zilla::Plugin::GatherDir - gather all the files in a directory
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
-This is a very, very simple L<FileGatherer|Dist::Zilla::FileGatherer> plugin.
-It looks in the directory named in the L</root> attribute and adds all the
-files it finds there.  If the root begins with a tilde, the tilde is replaced
-with the current user's home directory according to L<File::HomeDir>.
+This is a very, very simple L<FileGatherer|Dist::Zilla::Role::FileGatherer>
+plugin.  It looks in the directory named in the L</root> attribute and adds all
+the files it finds there.  If the root begins with a tilde, the tilde is
+replaced with the current user's home directory according to L<File::HomeDir>.
+
+Almost every dist will be built with one GatherDir plugin, since it's the
+easiest way to get files from disk into your dist.  Most users just need:
+
+  [GatherDir]
+
+...and this will pick up all the files from the current directory into the
+dist.  You can use it multiple times, as you can any other plugin, by providing
+a plugin name.  For example, if you want to include external specification
+files into a subdir of your dist, you might write:
+
+  [GatherDir]
+  ; this plugin needs no config and gathers most of your files
+
+  [GatherDir / SpecFiles]
+  ; this plugin gets all the files in the root dir and adds them under ./spec
+  root   = ~/projects/my-project/spec
+  prefix = spec
+
+=head1 ATTRIBUTES
+
+=head2 root
+
+This is the directory in which to look for files.  If not given, it defaults to
+the dist root -- generally, the place where your F<dist.ini> or other
+configuration file is located.
+
+=head2 prefix
+
+This parameter can be set to gather all the files found under a common
+directory.  See the L<description|DESCRIPTION> above for an example.
+
+=head2 include_dotfiles
+
+By default, files will not be included if they begin with a dot.  This goes
+both for files and for directories relative to the C<root>.
+
+In almost all cases, the default value (false) is correct.
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::GenerateFile;
 BEGIN {
-  $Dist::Zilla::Plugin::GenerateFile::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::GenerateFile::VERSION = '3.101461';
 }
 # ABSTRACT: build a custom file from only the plugin configuration
 use Moose;
@@ -37,7 +37,7 @@ sub gather_files {
   my ($self, $arg) = @_;
 
   my $content = join "\n", $self->content->flatten;
-  $content .= q{\\};
+  $content .= qq{\n};
 
   if ($self->is_template) {
     $content = $self->fill_in_string(
@@ -71,7 +71,7 @@ Dist::Zilla::Plugin::GenerateFile - build a custom file from only the plugin con
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::InlineFiles;
 BEGIN {
-  $Dist::Zilla::Plugin::InlineFiles::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::InlineFiles::VERSION = '3.101461';
 }
 # ABSTRACT: files in a data section
 use Moose;
@@ -42,7 +42,7 @@ Dist::Zilla::Plugin::InlineFiles - files in a data section
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::License;
 BEGIN {
-  $Dist::Zilla::Plugin::License::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::License::VERSION = '3.101461';
 }
 # ABSTRACT: output a LICENSE file
 use Moose;
@@ -34,7 +34,7 @@ Dist::Zilla::Plugin::License - output a LICENSE file
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::MakeMaker;
 BEGIN {
-  $Dist::Zilla::Plugin::MakeMaker::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::MakeMaker::VERSION = '3.101461';
 }
 
 # ABSTRACT: build a Makefile.PL that uses ExtUtils::MakeMaker
@@ -13,6 +13,8 @@ with 'Dist::Zilla::Role::TestRunner';
 with 'Dist::Zilla::Role::TextTemplate';
 
 
+use Config;
+
 use Data::Dumper ();
 use List::MoreUtils qw(any uniq);
 
@@ -99,8 +101,22 @@ sub setup_installer {
     );
   }
 
-  my $meta_prereq = $self->zilla->prereq->as_distmeta;
-  my $perl_prereq = delete $meta_prereq->{requires}{perl};
+  my $prereqs = $self->zilla->prereqs;
+  my $perl_prereq = $prereqs->requirements_for(qw(runtime requires))
+                  ->as_string_hash->{perl};
+
+  my $prereqs_dump = sub {
+    $prereqs->requirements_for(@_)
+            ->clone
+            ->clear_requirement('perl')
+            ->as_string_hash;
+  };
+
+  my $build_prereq
+    = $prereqs->requirements_for(qw(build requires))
+    ->clone
+    ->add_requirements($prereqs->requirements_for(qw(test requires)))
+    ->as_string_hash;
 
   my %write_makefile_args = (
     DISTNAME  => $self->zilla->name,
@@ -111,9 +127,9 @@ sub setup_installer {
     LICENSE   => $self->zilla->license->meta_yml_name,
     EXE_FILES => [ @exe_files ],
 
-    CONFIGURE_REQUIRES => delete $meta_prereq->{configure_requires},
-    BUILD_REQUIRES     => delete $meta_prereq->{build_requires},
-    PREREQ_PM          => delete $meta_prereq->{requires},
+    CONFIGURE_REQUIRES => $prereqs_dump->(qw(configure requires)),
+    BUILD_REQUIRES     => $build_prereq,
+    PREREQ_PM          => $prereqs_dump->(qw(runtime   requires)),
 
     test => { TESTS => join q{ }, sort keys %test_dirs },
   );
@@ -152,11 +168,18 @@ has __write_makefile_args => (
   isa  => 'HashRef',
 );
 
+has 'make_path' => (
+  isa => 'Str',
+  is  => 'ro',
+  default => $Config{make} || 'make',
+);
+
 sub build {
   my $self = shift;
 
+  my $make = $self->make_path;
   system($^X => 'Makefile.PL') and die "error with Makefile.PL\n";
-  system('make')               and die "error running make\n";
+  system($make)                and die "error running $make\n";
 
   return;
 }
@@ -164,8 +187,9 @@ sub build {
 sub test {
   my ( $self, $target ) = @_;
 
+  my $make = $self->make_path;
   $self->build;
-  system('make test') and die "error running make test\n";
+  system($make, 'test') and die "error running $make test\n";
 
   return;
 }
@@ -189,7 +213,7 @@ Dist::Zilla::Plugin::MakeMaker - build a Makefile.PL that uses ExtUtils::MakeMak
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,22 +1,35 @@
 package Dist::Zilla::Plugin::Manifest;
 BEGIN {
-  $Dist::Zilla::Plugin::Manifest::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::Manifest::VERSION = '3.101461';
 }
 # ABSTRACT: build a MANIFEST file
 use Moose;
 use Moose::Autobox;
-with 'Dist::Zilla::Role::InstallTool';
+with 'Dist::Zilla::Role::FileGatherer';
 
-use Dist::Zilla::File::InMemory;
+use Dist::Zilla::File::FromCode;
 
 
-sub setup_installer {
+sub __fix_filename {
+  my ($name) = @_;
+  return $name unless $name =~ /[ '\\]/;
+  $name =~ s/\\/\\\\/g;
+  $name =~ s/'/\\'/g;
+  return qq{'$name'};
+}
+
+sub gather_files {
   my ($self, $arg) = @_;
 
-  my $file = Dist::Zilla::File::InMemory->new({
-    name    => 'MANIFEST',
-    content => $self->zilla->files->map(sub{$_->name})->push('MANIFEST')
-               ->sort->join("\n"),
+  my $zilla = $self->zilla;
+
+  my $file = Dist::Zilla::File::FromCode->new({
+    name => 'MANIFEST',
+    code => sub {
+      $zilla->files->map(sub { $_->name })
+            ->sort->map( sub { __fix_filename($_) } )->join("\n")
+      . "\n",
+    },
   });
 
   $self->add_file($file);
@@ -35,7 +48,7 @@ Dist::Zilla::Plugin::Manifest - build a MANIFEST file
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::ManifestSkip;
 BEGIN {
-  $Dist::Zilla::Plugin::ManifestSkip::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::ManifestSkip::VERSION = '3.101461';
 }
 # ABSTRACT: decline to build files that appear in a MANIFEST.SKIP-like file
 use Moose;
@@ -39,7 +39,7 @@ Dist::Zilla::Plugin::ManifestSkip - decline to build files that appear in a MANI
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::MetaConfig;
 BEGIN {
-  $Dist::Zilla::Plugin::MetaConfig::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::MetaConfig::VERSION = '3.101461';
 }
 # ABSTRACT: summarize Dist::Zilla configuration into distmeta
 use Moose;
@@ -48,7 +48,7 @@ Dist::Zilla::Plugin::MetaConfig - summarize Dist::Zilla configuration into distm
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -1,25 +1,44 @@
 package Dist::Zilla::Plugin::MetaJSON;
 BEGIN {
-  $Dist::Zilla::Plugin::MetaJSON::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::MetaJSON::VERSION = '3.101461';
 }
 # ABSTRACT: produce a META.json
 use Moose;
 use Moose::Autobox;
 with 'Dist::Zilla::Role::FileGatherer';
 
+use CPAN::Meta::Converter 2.101460; # lax url schema validation
 use Dist::Zilla::File::FromCode;
 use Hash::Merge::Simple ();
 use JSON 2;
 
 
+has filename => (
+  is  => 'ro',
+  isa => 'Str',
+  default => 'META.json',
+);
+
+
+has version => (
+  is  => 'ro',
+  isa => 'Num',
+  default => '2',
+);
+
 sub gather_files {
   my ($self, $arg) = @_;
 
   my $zilla = $self->zilla;
+
   my $file  = Dist::Zilla::File::FromCode->new({
-    name => 'META.json',
+    name => $self->filename,
     code => sub {
-      JSON->new->ascii(1)->canonical(1)->pretty->encode($zilla->distmeta)
+      my $distmeta  = $zilla->distmeta;
+      my $converter = CPAN::Meta::Converter->new($distmeta);
+      my $output    = $converter->convert(version => $self->version);
+
+      JSON->new->ascii(1)->canonical(1)->pretty->encode($output)
       . "\n";
     },
   });
@@ -41,15 +60,29 @@ Dist::Zilla::Plugin::MetaJSON - produce a META.json
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
 This plugin will add a F<META.json> file to the distribution.
 
 This file is meant to replace the old-style F<META.yml>.  For more information
-on this file, see L<Module::Build::API> and
-L<http://module-build.sourceforge.net/META-spec-v1.3.html>.
+on this file, see L<Module::Build::API> and L<CPAN::Meta>.
+
+=head1 ATTRIBUTES
+
+=head2 filename
+
+If given, parameter allows you to specify an alternate name for the generated
+file.  It defaults, of course, to F<META.json>.
+
+=head2 version
+
+This parameter lets you pick what version of the spec to use when generating
+the output.  It defaults to 2 at present, but may be updated to new specs as
+they are released and adopted.
+
+If you want a fixed version, specify it.
 
 =head1 AUTHOR
 
@@ -1,7 +1,8 @@
 package Dist::Zilla::Plugin::MetaResources;
 BEGIN {
-  $Dist::Zilla::Plugin::MetaResources::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::MetaResources::VERSION = '3.101461';
 }
+
 # ABSTRACT: provide arbitrary "resources" for distribution metadata
 use Moose;
 with 'Dist::Zilla::Role::MetaProvider';
@@ -15,16 +16,33 @@ has resources => (
 
 sub BUILDARGS {
   my ($class, @arg) = @_;
-  my %copy = ref $arg[0] ? %{$arg[0]} : @arg;
+  my %copy = ref $arg[0] ? %{ $arg[0] } : @arg;
 
   my $zilla = delete $copy{zilla};
   my $name  = delete $copy{plugin_name};
 
+  if (exists $copy{bugtracker}) {
+    my $tracker = delete $copy{bugtracker};
+    $copy{bugtracker}{web} = $tracker;
+  }
+
+  if (exists $copy{repository}) {
+    my $repo = delete $copy{repository};
+    $copy{repository}{url} = $repo;
+  }
+
+  for my $multi (qw( bugtracker repository )) {
+    for my $key (grep { /^\Q$multi\E\./ } keys %copy) {
+      my $subkey = (split /\./, $key, 2)[1];
+      $copy{$multi}{$subkey} = delete $copy{$key};
+    }
+  }
+
   return {
-    zilla => $zilla,
+    zilla       => $zilla,
     plugin_name => $name,
     resources   => \%copy,
-  }
+  };
 }
 
 sub metadata {
@@ -46,14 +64,19 @@ Dist::Zilla::Plugin::MetaResources - provide arbitrary "resources" for distribut
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
 This plugin adds resources entries to the distribution's metadata.
 
   [MetaResources]
-  homepage = http://example.com/~dude/project.asp
+  homepage          = http://example.com/~dude/project.asp
+  bugtracker.web    = http://rt.cpan.org/NoAuth/Bugs.html?Dist=Project
+  bugtracker.mailto = bug-project@rt.cpan.org
+  repository.url    = git://github.com/dude/project.git
+  repository.web    = http://github.com/dude/project
+  repository.type   = git
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::MetaTests;
 BEGIN {
-  $Dist::Zilla::Plugin::MetaTests::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::MetaTests::VERSION = '3.101461';
 }
 # ABSTRACT: common extra tests for META.yml
 use Moose;
@@ -21,7 +21,7 @@ Dist::Zilla::Plugin::MetaTests - common extra tests for META.yml
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,15 +1,29 @@
 package Dist::Zilla::Plugin::MetaYAML;
 BEGIN {
-  $Dist::Zilla::Plugin::MetaYAML::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::MetaYAML::VERSION = '3.101461';
 }
 # ABSTRACT: produce a META.yml
 use Moose;
 use Moose::Autobox;
 with 'Dist::Zilla::Role::FileGatherer';
 
+use CPAN::Meta::Converter 2.101460; # lax url schema validation
 use Hash::Merge::Simple ();
 
 
+has filename => (
+  is  => 'ro',
+  isa => 'Str',
+  default => 'META.yml',
+);
+
+
+has version => (
+  is  => 'ro',
+  isa => 'Num',
+  default => '1.4',
+);
+
 sub gather_files {
   my ($self, $arg) = @_;
 
@@ -17,10 +31,15 @@ sub gather_files {
   require YAML::Tiny;
 
   my $zilla = $self->zilla;
+
   my $file  = Dist::Zilla::File::FromCode->new({
-    name => 'META.yml',
+    name => $self->filename,
     code => sub {
-      YAML::Tiny::Dump($zilla->distmeta);
+      my $distmeta  = $zilla->distmeta;
+      my $converter = CPAN::Meta::Converter->new($distmeta);
+      my $output    = $converter->convert(version => $self->version);
+
+      YAML::Tiny::Dump($output);
     },
   });
 
@@ -41,14 +60,31 @@ Dist::Zilla::Plugin::MetaYAML - produce a META.yml
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
 This plugin will add a F<META.yml> file to the distribution.
 
-For more information on this file, see L<Module::Build::API> and
-L<http://module-build.sourceforge.net/META-spec-v1.3.html>.
+For more information on this file, see L<Module::Build::API> and L<CPAN::Meta>.
+
+=head1 ATTRIBUTES
+
+=head2 filename
+
+If given, parameter allows you to specify an alternate name for the generated
+file.  It defaults, of course, to F<META.yml>.
+
+=head2 version
+
+This parameter lets you pick what version of the spec to use when generating
+the output.  It defaults to 1.4, the most commonly supported version at
+present.
+
+B<This may change without notice in the future.>
+
+Once version 2 of the META file spec is more widely supported, this may default
+to 2.
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::ModuleBuild;
 BEGIN {
-  $Dist::Zilla::Plugin::ModuleBuild::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::ModuleBuild::VERSION = '3.101461';
 }
 # ABSTRACT: build a Build.PL that uses Module::Build
 use List::MoreUtils qw(any uniq);
@@ -65,6 +65,18 @@ sub setup_installer {
   $self->log_fatal("can't install files with whitespace in their names")
     if grep { /\s/ } @exe_files;
 
+  my $prereqs = $self->zilla->prereqs;
+  my %prereqs = (
+    configure_requires => $prereqs->requirements_for(qw(configure requires)),
+    build_requires     => $prereqs->requirements_for(qw(build     requires)),
+    requires           => $prereqs->requirements_for(qw(runtime   requires)),
+    recommends         => $prereqs->requirements_for(qw(runtime   recommends)),
+  );
+
+  $prereqs{build_requires} = $prereqs{build_requires}->clone->add_requirements(
+    $prereqs->requirements_for(qw(test requires))
+  );
+
   my %module_build_args = (
     module_name   => $name,
     license       => $self->zilla->license->meta_yml_name,
@@ -75,9 +87,7 @@ sub setup_installer {
     script_files  => \@exe_files,
     ($self->zilla->_share_dir ? (share_dir => $self->zilla->_share_dir) : ()),
 
-    # I believe it is a happy coincidence, for the moment, that this happens to
-    # return just the same thing that is needed here. -- rjbs, 2010-01-22
-    $self->zilla->prereq->as_distmeta->flatten,
+    (map {; $_ => $prereqs{$_}->as_string_hash } keys %prereqs),
   );
 
   $self->__module_build_args(\%module_build_args);
@@ -116,7 +126,7 @@ sub build {
   my $self = shift;
 
   system($^X => 'Build.PL') and die "error with Build.PL\n";
-  system('./Build')         and die "error running ./Build\n";
+  system($^X, 'Build')      and die "error running $^X Build\n";
 
   return;
 }
@@ -125,7 +135,7 @@ sub test {
   my ($self, $target) = @_;
 
   $self->build;
-  system('./Build test') and die "error running ./Build test\n";
+  system($^X, 'Build', 'test') and die "error running $^X Build test\n";
 
   return;
 }
@@ -143,7 +153,7 @@ Dist::Zilla::Plugin::ModuleBuild - build a Build.PL that uses Module::Build
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::NextRelease;
 BEGIN {
-  $Dist::Zilla::Plugin::NextRelease::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::NextRelease::VERSION = '3.101461';
 }
 # ABSTRACT: update the next release number in your changelog
 
@@ -118,7 +118,7 @@ Dist::Zilla::Plugin::NextRelease - update the next release number in your change
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::PkgVersion;
 BEGIN {
-  $Dist::Zilla::Plugin::PkgVersion::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::PkgVersion::VERSION = '3.101461';
 }
 # ABSTRACT: add a $VERSION to your packages
 use Moose;
@@ -102,7 +102,7 @@ Dist::Zilla::Plugin::PkgVersion - add a $VERSION to your packages
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::PodCoverageTests;
 BEGIN {
-  $Dist::Zilla::Plugin::PodCoverageTests::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::PodCoverageTests::VERSION = '3.101461';
 }
 # ABSTRACT: a release test for Pod coverage
 use Moose;
@@ -21,7 +21,7 @@ Dist::Zilla::Plugin::PodCoverageTests - a release test for Pod coverage
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::PodSyntaxTests;
 BEGIN {
-  $Dist::Zilla::Plugin::PodSyntaxTests::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::PodSyntaxTests::VERSION = '3.101461';
 }
 # ABSTRACT: a release test for Pod syntax
 use Moose;
@@ -21,7 +21,7 @@ Dist::Zilla::Plugin::PodSyntaxTests - a release test for Pod syntax
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::PodVersion;
 BEGIN {
-  $Dist::Zilla::Plugin::PodVersion::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::PodVersion::VERSION = '3.101461';
 }
 # ABSTRACT: add a VERSION head1 to each Perl document
 use Moose;
@@ -75,7 +75,7 @@ Dist::Zilla::Plugin::PodVersion - add a VERSION head1 to each Perl document
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::Prereq;
 BEGIN {
-  $Dist::Zilla::Plugin::Prereq::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::Prereq::VERSION = '3.101461';
 }
 # ABSTRACT: list simple prerequisites
 use Moose;
@@ -32,7 +32,6 @@ has prereq_phase => (
     my ($phase, $type) = $self->__from_name;
     $phase ||= 'runtime';
     $phase = lc $phase;
-    $phase = 'build' if $phase eq 'test'; # XXX: Temporary -- rjbs, 2010-03-20
     return $phase;
   },
 );
@@ -122,7 +121,7 @@ Dist::Zilla::Plugin::Prereq - list simple prerequisites
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::PruneCruft;
 BEGIN {
-  $Dist::Zilla::Plugin::PruneCruft::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::PruneCruft::VERSION = '3.101461';
 }
 # ABSTRACT: prune stuff that you probably don't mean to include
 use Moose;
@@ -47,7 +47,7 @@ Dist::Zilla::Plugin::PruneCruft - prune stuff that you probably don't mean to in
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::PruneFiles;
 BEGIN {
-  $Dist::Zilla::Plugin::PruneFiles::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::PruneFiles::VERSION = '3.101461';
 }
 # ABSTRACT: prune arbirary files from the dist
 use Moose;
@@ -47,7 +47,7 @@ Dist::Zilla::Plugin::PruneFiles - prune arbirary files from the dist
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::Readme;
 BEGIN {
-  $Dist::Zilla::Plugin::Readme::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::Readme::VERSION = '3.101461';
 }
 # ABSTRACT: build a README file
 use Moose;
@@ -52,7 +52,7 @@ Dist::Zilla::Plugin::Readme - build a README file
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::ShareDir;
 BEGIN {
-  $Dist::Zilla::Plugin::ShareDir::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::ShareDir::VERSION = '3.101461';
 }
 # ABSTRACT: install a directory's contents as "ShareDir" content
 use Moose;
@@ -28,7 +28,7 @@ Dist::Zilla::Plugin::ShareDir - install a directory's contents as "ShareDir" con
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::TemplateModule;
 BEGIN {
-  $Dist::Zilla::Plugin::TemplateModule::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::TemplateModule::VERSION = '3.101461';
 }
 # ABSTRACT: a simple module-from-template plugin
 use Moose;
@@ -11,6 +11,7 @@ use autodie;
 use Data::Section 0.004 -setup; # fixed header_re
 use Dist::Zilla::File::InMemory;
 
+
 has template => (
   is  => 'ro',
   isa => 'Str',
@@ -59,7 +60,30 @@ Dist::Zilla::Plugin::TemplateModule - a simple module-from-template plugin
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
+
+=head1 DESCRIPTION
+
+This is a L<ModuleMaker|Dist::Zilla::Role::ModuleMaker> used for creating new
+Perl modules files when minting a new dist with C<dzil new>.  It uses
+L<Text::Template> (via L<Dist::Zilla::Role::TextTemplate>) to render a template
+into a Perl module.  The only variable provided to the template is C<$name>,
+the module name.  The module is always created as a file under F<./lib>.
+
+By default, the template looks something like this:
+
+  use strict;
+  use warnings;
+  package {{ $name }};
+
+  1;
+
+=head1 ATTRIBUTES
+
+=head2 template
+
+The C<template> parameter may be given to the plugin to provide a different
+filename, absolute or relative to the build root.
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::TestRelease;
 BEGIN {
-  $Dist::Zilla::Plugin::TestRelease::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::TestRelease::VERSION = '3.101461';
 }
 use Moose;
 with 'Dist::Zilla::Role::BeforeRelease';
@@ -54,7 +54,7 @@ Dist::Zilla::Plugin::TestRelease - extract archive and run tests before releasin
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Plugin::UploadToCPAN;
 BEGIN {
-  $Dist::Zilla::Plugin::UploadToCPAN::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::UploadToCPAN::VERSION = '3.101461';
 }
 # ABSTRACT: upload the dist to CPAN
 use Moose;
@@ -18,7 +18,7 @@ use namespace::autoclean;
   package
     Dist::Zilla::Plugin::UploadToCPAN::_Uploader;
 BEGIN {
-  $Dist::Zilla::Plugin::UploadToCPAN::_Uploader::VERSION = '2.101310';
+  $Dist::Zilla::Plugin::UploadToCPAN::_Uploader::VERSION = '3.101461';
 }
   use base 'CPAN::Uploader';
   sub log {
@@ -123,7 +123,7 @@ Dist::Zilla::Plugin::UploadToCPAN - upload the dist to CPAN
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::PluginBundle::Basic;
 BEGIN {
-  $Dist::Zilla::PluginBundle::Basic::VERSION = '2.101310';
+  $Dist::Zilla::PluginBundle::Basic::VERSION = '3.101461';
 }
 # ABSTRACT: the basic plugins to maintain and release CPAN dists
 use Moose;
@@ -42,7 +42,7 @@ Dist::Zilla::PluginBundle::Basic - the basic plugins to maintain and release CPA
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::PluginBundle::Classic;
 BEGIN {
-  $Dist::Zilla::PluginBundle::Classic::VERSION = '2.101310';
+  $Dist::Zilla::PluginBundle::Classic::VERSION = '3.101461';
 }
 # ABSTRACT: the classic (old) default configuration for Dist::Zilla
 use Moose;
@@ -45,7 +45,7 @@ Dist::Zilla::PluginBundle::Classic - the classic (old) default configuration for
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::PluginBundle::FakeClassic;
 BEGIN {
-  $Dist::Zilla::PluginBundle::FakeClassic::VERSION = '2.101310';
+  $Dist::Zilla::PluginBundle::FakeClassic::VERSION = '3.101461';
 }
 # ABSTRACT: build something more or less like a "classic" CPAN dist
 use Moose;
@@ -39,7 +39,7 @@ Dist::Zilla::PluginBundle::FakeClassic - build something more or less like a "cl
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::PluginBundle::Filter;
 BEGIN {
-  $Dist::Zilla::PluginBundle::Filter::VERSION = '2.101310';
+  $Dist::Zilla::PluginBundle::Filter::VERSION = '3.101461';
 }
 # ABSTRACT: use another bundle, with some plugins removed
 use Moose;
@@ -56,7 +56,7 @@ Dist::Zilla::PluginBundle::Filter - use another bundle, with some plugins remove
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,12 +1,13 @@
 package Dist::Zilla::Prereqs;
 BEGIN {
-  $Dist::Zilla::Prereqs::VERSION = '2.101310';
+  $Dist::Zilla::Prereqs::VERSION = '3.101461';
 }
 # ABSTRACT: the prerequisites of a Dist::Zilla distribution
 use Moose;
 use Moose::Autobox;
 use MooseX::Types::Moose qw(Bool HashRef);
 
+use CPAN::Meta::Prereqs 2.101390;
 use Hash::Merge::Simple ();
 use Path::Class ();
 use String::RewritePrefix;
@@ -14,60 +15,33 @@ use Version::Requirements;
 
 use namespace::autoclean;
 
-has is_finalized => (
-  is  => 'ro',
-  isa => Bool,
-  traits  => [ qw(Bool) ],
-  default => 0,
-  handles => {
-    finalize => 'set',
-  },
-);
 
-has _guts => (
+has cpan_meta_prereqs => (
   is  => 'ro',
-  isa => HashRef,
-  default  => sub { {} },
+  isa => 'CPAN::Meta::Prereqs',
   init_arg => undef,
+  default  => sub { CPAN::Meta::Prereqs->new },
+  handles  => [ qw(
+    finalize
+    is_finalized
+    requirements_for
+    as_string_hash
+  ) ],
 );
 
-sub as_distmeta {
-  my ($self) = @_;
-
-  my $distmeta = {
-    requires           =>
-      ($self->_guts->{runtime}{requires} || Version::Requirements->new)
-      ->as_string_hash,
-    recommends         =>
-      ($self->_guts->{runtime}{recommends} || Version::Requirements->new)
-      ->as_string_hash,
-    build_requires     =>
-      ($self->_guts->{build}{requires} || Version::Requirements->new)
-      ->as_string_hash,
-    configure_requires =>
-      ($self->_guts->{configure}{requires} || Version::Requirements->new)
-      ->as_string_hash,
-  };
-
-  return $distmeta;
-}
 
 sub register_prereqs {
   my $self = shift;
   my $arg  = ref($_[0]) ? shift(@_) : {};
   my %prereq = @_;
 
-  confess "too late to register a prereq" if $self->is_finalized;
-
   my $phase = $arg->{phase} || 'runtime';
   my $type  = $arg->{type}  || 'requires';
 
-  $phase = 'build' if $phase eq 'test';
-
-  my $prereq = ($self->_guts->{$phase}{$type} ||= Version::Requirements->new);
+  my $req = $self->requirements_for($phase, $type);
 
   while (my ($package, $version) = each %prereq) {
-    $prereq->add_minimum($package, $version);
+    $req->add_minimum($package, $version);
   }
 
   return;
@@ -84,7 +58,63 @@ Dist::Zilla::Prereqs - the prerequisites of a Dist::Zilla distribution
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
+
+=head1 DESCRIPTION
+
+Dist::Zilla::Prereqs is a subcomponent of Dist::Zilla.  The C<prereqs>
+attribute on your Dist::Zilla object is a Dist::Zilla::Prereqs object, and is
+responsible for keeping track of the distribution's prerequisites.
+
+In fact, a Dist::Zilla::Prereqs object is just a thin layer over a
+L<CPAN::Meta::Prereqs> object, stored in the C<cpan_meta_prereqs> attribute.
+
+Almost everything this object does is proxied to the CPAN::Meta::Prereqs
+object, so you should really read how I<that> works.
+
+Dist::Zilla::Prereqs proxies the following methods to the CPAN::Meta::Prereqs
+object:
+
+=over 4
+
+=item *
+
+finalize
+
+=item *
+
+is_finalized
+
+=item *
+
+requirements_for
+
+=item *
+
+as_string_hash
+
+=back
+
+=head1 METHODS
+
+=head2 register_prereqs
+
+  $prereqs->register_prereqs(%prereqs);
+
+  $prereqs->register_prereqs(\%arg, %prereqs);
+
+This method adds new minimums to the prereqs object.  If a hashref is the first
+arg, it may have entries for C<phase> and C<type> to indicate what kind of
+prereqs are being registered.  (For more information on phase and type, see
+L<CPAN::Meta::Spec>.)  For example, you might say:
+
+  $prereqs->register_prereqs(
+    { phase => 'test', type => 'recommends' },
+    'Test::Foo' => '1.23',
+    'XML::YZZY' => '2.01',
+  );
+
+If not given, phase and type default to runtime and requires, respectively.
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::AfterBuild;
 BEGIN {
-  $Dist::Zilla::Role::AfterBuild::VERSION = '2.101310';
+  $Dist::Zilla::Role::AfterBuild::VERSION = '3.101461';
 }
 # ABSTRACT: something that runs after building is mostly complete
 use Moose::Role;
@@ -21,7 +21,7 @@ Dist::Zilla::Role::AfterBuild - something that runs after building is mostly com
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::AfterMint;
 BEGIN {
-  $Dist::Zilla::Role::AfterMint::VERSION = '2.101310';
+  $Dist::Zilla::Role::AfterMint::VERSION = '3.101461';
 }
 # ABSTRACT: something that runs after minting is mostly complete
 use Moose::Role;
@@ -21,7 +21,7 @@ Dist::Zilla::Role::AfterMint - something that runs after minting is mostly compl
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -3,7 +3,7 @@ use warnings;
 
 package Dist::Zilla::Role::AfterRelease;
 BEGIN {
-  $Dist::Zilla::Role::AfterRelease::VERSION = '2.101310';
+  $Dist::Zilla::Role::AfterRelease::VERSION = '3.101461';
 }
 # ABSTRACT: something that runs after release is mostly complete
 
@@ -24,7 +24,7 @@ Dist::Zilla::Role::AfterRelease - something that runs after release is mostly co
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::BeforeArchive;
 BEGIN {
-  $Dist::Zilla::Role::BeforeArchive::VERSION = '2.101310';
+  $Dist::Zilla::Role::BeforeArchive::VERSION = '3.101461';
 }
 use Moose::Role;
 with 'Dist::Zilla::Role::Plugin';
@@ -20,7 +20,7 @@ Dist::Zilla::Role::BeforeArchive - something that runs before the archive file i
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::BeforeBuild;
 BEGIN {
-  $Dist::Zilla::Role::BeforeBuild::VERSION = '2.101310';
+  $Dist::Zilla::Role::BeforeBuild::VERSION = '3.101461';
 }
 # ABSTRACT: something that runs before building really begins
 use Moose::Role;
@@ -21,7 +21,7 @@ Dist::Zilla::Role::BeforeBuild - something that runs before building really begi
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::BeforeMint;
 BEGIN {
-  $Dist::Zilla::Role::BeforeMint::VERSION = '2.101310';
+  $Dist::Zilla::Role::BeforeMint::VERSION = '3.101461';
 }
 # ABSTRACT: something that runs before minting really begins
 use Moose::Role;
@@ -21,7 +21,7 @@ Dist::Zilla::Role::BeforeMint - something that runs before minting really begins
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -3,7 +3,7 @@ use warnings;
 
 package Dist::Zilla::Role::BeforeRelease;
 BEGIN {
-  $Dist::Zilla::Role::BeforeRelease::VERSION = '2.101310';
+  $Dist::Zilla::Role::BeforeRelease::VERSION = '3.101461';
 }
 # ABSTRACT: something that runs before release really begins
 
@@ -24,7 +24,7 @@ Dist::Zilla::Role::BeforeRelease - something that runs before release really beg
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::BuildRunner;
 BEGIN {
-  $Dist::Zilla::Role::BuildRunner::VERSION = '2.101310';
+  $Dist::Zilla::Role::BuildRunner::VERSION = '3.101461';
 }
 use Moose::Role;
 with 'Dist::Zilla::Role::Plugin';
@@ -21,7 +21,7 @@ Dist::Zilla::Role::BuildRunner - something used as a delegating agent during 'dz
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::Chrome;
 BEGIN {
-  $Dist::Zilla::Role::Chrome::VERSION = '2.101310';
+  $Dist::Zilla::Role::Chrome::VERSION = '3.101461';
 }
 use Moose::Role;
 # ABSTRACT: something that provides a user interface for Dist::Zilla
@@ -18,7 +18,7 @@ Dist::Zilla::Role::Chrome - something that provides a user interface for Dist::Z
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::ConfigDumper;
 BEGIN {
-  $Dist::Zilla::Role::ConfigDumper::VERSION = '2.101310';
+  $Dist::Zilla::Role::ConfigDumper::VERSION = '3.101461';
 }
 # ABSTRACT: something that can dump its (public, simplified) configuraiton
 use Moose::Role;
@@ -21,7 +21,7 @@ Dist::Zilla::Role::ConfigDumper - something that can dump its (public, simplifie
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::ExecFiles;
 BEGIN {
-  $Dist::Zilla::Role::ExecFiles::VERSION = '2.101310';
+  $Dist::Zilla::Role::ExecFiles::VERSION = '3.101461';
 }
 use Moose::Role;
 with 'Dist::Zilla::Role::FileFinder';
@@ -26,7 +26,7 @@ Dist::Zilla::Role::ExecFiles - something that finds files to install as executab
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::File;
 BEGIN {
-  $Dist::Zilla::Role::File::VERSION = '2.101310';
+  $Dist::Zilla::Role::File::VERSION = '3.101461';
 }
 # ABSTRACT: something that can act like a file
 use Moose::Role;
@@ -48,7 +48,7 @@ Dist::Zilla::Role::File - something that can act like a file
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::FileFinder;
 BEGIN {
-  $Dist::Zilla::Role::FileFinder::VERSION = '2.101310';
+  $Dist::Zilla::Role::FileFinder::VERSION = '3.101461';
 }
 use Moose::Autobox;
 # ABSTRACT: something that finds files within the distribution
@@ -22,7 +22,7 @@ Dist::Zilla::Role::FileFinder - something that finds files within the distributi
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::FileFinderUser;
 BEGIN {
-  $Dist::Zilla::Role::FileFinderUser::VERSION = '2.101310';
+  $Dist::Zilla::Role::FileFinderUser::VERSION = '3.101461';
 }
 use MooseX::Role::Parameterized;
 # ABSTRACT: something that uses FileFinder plugins
@@ -78,7 +78,7 @@ Dist::Zilla::Role::FileFinderUser - something that uses FileFinder plugins
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::FileGatherer;
 BEGIN {
-  $Dist::Zilla::Role::FileGatherer::VERSION = '2.101310';
+  $Dist::Zilla::Role::FileGatherer::VERSION = '3.101461';
 }
 use Moose::Autobox;
 # ABSTRACT: something that gathers files into the distribution
@@ -23,7 +23,7 @@ Dist::Zilla::Role::FileGatherer - something that gathers files into the distribu
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::FileInjector;
 BEGIN {
-  $Dist::Zilla::Role::FileInjector::VERSION = '2.101310';
+  $Dist::Zilla::Role::FileInjector::VERSION = '3.101461';
 }
 use Moose::Autobox;
 # ABSTRACT: something that can add files to the distribution
@@ -32,7 +32,7 @@ Dist::Zilla::Role::FileInjector - something that can add files to the distributi
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::FileMunger;
 BEGIN {
-  $Dist::Zilla::Role::FileMunger::VERSION = '2.101310';
+  $Dist::Zilla::Role::FileMunger::VERSION = '3.101461';
 }
 # ABSTRACT: something that alters a file's destination or content
 use Moose::Role;
@@ -30,7 +30,7 @@ Dist::Zilla::Role::FileMunger - something that alters a file's destination or co
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::FilePruner;
 BEGIN {
-  $Dist::Zilla::Role::FilePruner::VERSION = '2.101310';
+  $Dist::Zilla::Role::FilePruner::VERSION = '3.101461';
 }
 # ABSTRACT: something that removes found files from the distribution
 use Moose::Role;
@@ -21,7 +21,7 @@ Dist::Zilla::Role::FilePruner - something that removes found files from the dist
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::InstallTool;
 BEGIN {
-  $Dist::Zilla::Role::InstallTool::VERSION = '2.101310';
+  $Dist::Zilla::Role::InstallTool::VERSION = '3.101461';
 }
 # ABSTRACT: something that creates an install program for a dist
 use Moose::Role;
@@ -23,7 +23,7 @@ Dist::Zilla::Role::InstallTool - something that creates an install program for a
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::MetaProvider;
 BEGIN {
-  $Dist::Zilla::Role::MetaProvider::VERSION = '2.101310';
+  $Dist::Zilla::Role::MetaProvider::VERSION = '3.101461';
 }
 # ABSTRACT: something that provides metadata (for META.yml/json)
 use Moose::Role;
@@ -21,7 +21,7 @@ Dist::Zilla::Role::MetaProvider - something that provides metadata (for META.yml
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::ModuleMaker;
 BEGIN {
-  $Dist::Zilla::Role::ModuleMaker::VERSION = '2.101310';
+  $Dist::Zilla::Role::ModuleMaker::VERSION = '3.101461';
 }
 # ABSTRACT: something that injects module files into the dist
 use Moose::Role;
@@ -21,7 +21,7 @@ Dist::Zilla::Role::ModuleMaker - something that injects module files into the di
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -29,7 +29,7 @@ Plugins implementing this role have their C<make_module> method called for each
 module requesting creation by the plugin with this name.  It is passed a
 hashref with the following data:
 
-  name - the name of the module to make (a Dist::Zilla::Types::ModuleName)
+  name - the name of the module to make (a MooseX::Types::Perl::ModuleName)
 
 Classes composing this role also compose
 L<FileInjector|Dist::Zilla::Role::FileInjector> and are expected to inject a
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::Plugin;
 BEGIN {
-  $Dist::Zilla::Role::Plugin::VERSION = '2.101310';
+  $Dist::Zilla::Role::Plugin::VERSION = '3.101461';
 }
 # ABSTRACT: something that gets plugged in to Dist::Zilla
 use Moose::Role;
@@ -56,7 +56,7 @@ Dist::Zilla::Role::Plugin - something that gets plugged in to Dist::Zilla
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::PluginBundle::Easy;
 BEGIN {
-  $Dist::Zilla::Role::PluginBundle::Easy::VERSION = '2.101310';
+  $Dist::Zilla::Role::PluginBundle::Easy::VERSION = '3.101461';
 }
 # ABSTRACT: something that bundles a bunch of plugins easily
 # This plugin was originally contributed by Christopher J. Madsen
@@ -140,7 +140,7 @@ Dist::Zilla::Role::PluginBundle::Easy - something that bundles a bunch of plugin
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::PluginBundle;
 BEGIN {
-  $Dist::Zilla::Role::PluginBundle::VERSION = '2.101310';
+  $Dist::Zilla::Role::PluginBundle::VERSION = '3.101461';
 }
 # ABSTRACT: something that bundles a bunch of plugins
 use Moose::Role;
@@ -20,7 +20,7 @@ Dist::Zilla::Role::PluginBundle - something that bundles a bunch of plugins
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::PrereqSource;
 BEGIN {
-  $Dist::Zilla::Role::PrereqSource::VERSION = '2.101310';
+  $Dist::Zilla::Role::PrereqSource::VERSION = '3.101461';
 }
 # ABSTRACT: something that registers prerequisites
 use Moose::Role;
@@ -21,7 +21,7 @@ Dist::Zilla::Role::PrereqSource - something that registers prerequisites
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::Releaser;
 BEGIN {
-  $Dist::Zilla::Role::Releaser::VERSION = '2.101310';
+  $Dist::Zilla::Role::Releaser::VERSION = '3.101461';
 }
 # ABSTRACT: something that makes a release of the dist
 use Moose::Role;
@@ -21,7 +21,7 @@ Dist::Zilla::Role::Releaser - something that makes a release of the dist
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::ShareDir;
 BEGIN {
-  $Dist::Zilla::Role::ShareDir::VERSION = '2.101310';
+  $Dist::Zilla::Role::ShareDir::VERSION = '3.101461';
 }
 use Moose::Role;
 with 'Dist::Zilla::Role::FileFinder';
@@ -24,7 +24,7 @@ Dist::Zilla::Role::ShareDir - something that picks a directory to install as sha
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::TestRunner;
 BEGIN {
-  $Dist::Zilla::Role::TestRunner::VERSION = '2.101310';
+  $Dist::Zilla::Role::TestRunner::VERSION = '3.101461';
 }
 use Moose::Role;
 with 'Dist::Zilla::Role::Plugin';
@@ -21,7 +21,7 @@ Dist::Zilla::Role::TestRunner - something used as a delegating agent to 'dzil te
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::TextTemplate;
 BEGIN {
-  $Dist::Zilla::Role::TextTemplate::VERSION = '2.101310';
+  $Dist::Zilla::Role::TextTemplate::VERSION = '3.101461';
 }
 # ABSTRACT: something that renders a Text::Template template string
 use Moose::Role;
@@ -42,7 +42,7 @@ Dist::Zilla::Role::TextTemplate - something that renders a Text::Template templa
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Role::VersionProvider;
 BEGIN {
-  $Dist::Zilla::Role::VersionProvider::VERSION = '2.101310';
+  $Dist::Zilla::Role::VersionProvider::VERSION = '3.101461';
 }
 # ABSTRACT: something that provides a version number for the dist
 use Moose::Role;
@@ -21,7 +21,7 @@ Dist::Zilla::Role::VersionProvider - something that provides a version number fo
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Tester;
 BEGIN {
-  $Dist::Zilla::Tester::VERSION = '2.101310';
+  $Dist::Zilla::Tester::VERSION = '3.101461';
 }
 use Moose;
 extends 'Dist::Zilla';
@@ -133,7 +133,7 @@ Dist::Zilla::Tester - a testing-enabling stand-in for  Dist::Zilla
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 package Dist::Zilla::Tutorial;
 BEGIN {
-  $Dist::Zilla::Tutorial::VERSION = '2.101310';
+  $Dist::Zilla::Tutorial::VERSION = '3.101461';
 }
 # ABSTRACT: how to use this "Dist::Zilla" thing
 use Carp ();
@@ -18,7 +18,7 @@ Dist::Zilla::Tutorial - how to use this "Dist::Zilla" thing
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 SYNOPSIS
 
@@ -1,37 +1,14 @@
 package Dist::Zilla::Types;
 BEGIN {
-  $Dist::Zilla::Types::VERSION = '2.101310';
+  $Dist::Zilla::Types::VERSION = '3.101461';
 }
 # ABSTRACT: dzil-specific type library
 
-use MooseX::Types -declare => [qw(DistName License ModuleName VersionStr)];
-use MooseX::Types::Moose qw(Str);
-
-use Params::Util qw(_CLASS);
-
-use version 0.82;
-
-subtype ModuleName,
-  as Str,
-  where   { _CLASS($_) },
-  message { "$_ is not a valid module name" };
-
-subtype DistName,
-  as Str,
-  where   { return if /:/; (my $str = $_) =~ s/-/::/g; _CLASS($str) },
-  message {
-    /::/
-    ? "$_ looks like a module name, not a dist name"
-    : "$_ is not a valid dist name"
-  };
 
-subtype License,
-  as class_type('Software::License');
+use MooseX::Types -declare => [qw(License)];
+use MooseX::Types::Moose qw(Str);
 
-subtype VersionStr,
-  as Str,
-  where { version::is_lax($_) },
-  message { "$_ is not a valid version string" };
+subtype License, as class_type('Software::License');
 
 1;
 
@@ -44,7 +21,15 @@ Dist::Zilla::Types - dzil-specific type library
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
+
+=head1 OVERVIEW
+
+This library provides L<MooseX::Types> types for use by Dist::Zilla.  These
+types are not (yet?) for public consumption, and you should not rely on them.
+
+Dist::Zilla uses a number of types found in L<MooseX::Types::Perl>.  Maybe
+that's what you want.
 
 =head1 AUTHOR
 
@@ -1,6 +1,6 @@
 package Dist::Zilla::Util::MVPAssembler;
 BEGIN {
-  $Dist::Zilla::Util::MVPAssembler::VERSION = '2.101310';
+  $Dist::Zilla::Util::MVPAssembler::VERSION = '3.101461';
 }
 use Moose;
 extends 'Config::MVP::Assembler';
@@ -33,7 +33,7 @@ Dist::Zilla::Util::MVPAssembler - Dist::Zilla-specific subclass of Config::MVP::
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 AUTHOR
 
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 package Dist::Zilla::Util;
 BEGIN {
-  $Dist::Zilla::Util::VERSION = '2.101310';
+  $Dist::Zilla::Util::VERSION = '3.101461';
 }
 # ABSTRACT: random snippets of code that Dist::Zilla wants
 
@@ -12,7 +12,7 @@ use String::RewritePrefix 0.002; # better string context behavior
   package
     Dist::Zilla::Util::PEA;
 BEGIN {
-  $Dist::Zilla::Util::PEA::VERSION = '2.101310';
+  $Dist::Zilla::Util::PEA::VERSION = '3.101461';
 }
   use Pod::Eventual 0.091480; # better nonpod/blank events
   use base 'Pod::Eventual';
@@ -84,7 +84,7 @@ Dist::Zilla::Util - random snippets of code that Dist::Zilla wants
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 METHODS
 
@@ -1,17 +1,19 @@
 package Dist::Zilla;
 BEGIN {
-  $Dist::Zilla::VERSION = '2.101310';
+  $Dist::Zilla::VERSION = '3.101461';
 }
 # ABSTRACT: distribution builder; installer not included!
 use Moose 0.92; # role composition fixes
 with 'Dist::Zilla::Role::ConfigDumper';
 
 use Moose::Autobox 0.09; # ->flatten
-use Dist::Zilla::Types qw(DistName License VersionStr);
 use MooseX::Types::Moose qw(Bool HashRef);
+use MooseX::Types::Perl qw(DistName LaxVersionStr);
 use MooseX::Types::Path::Class qw(Dir File);
 use Moose::Util::TypeConstraints;
 
+use Dist::Zilla::Types qw(License);
+
 use Archive::Tar;
 use File::Find::Rule;
 use File::pushd ();
@@ -21,7 +23,7 @@ use List::Util qw(first);
 use Log::Dispatchouli 1.100712; # proxy_loggers, quiet_fatal
 use Params::Util qw(_HASHLIKE);
 use Path::Class;
-use Software::License;
+use Software::License 0.101370; # meta2_name
 use String::RewritePrefix;
 
 use Dist::Zilla::Prereqs;
@@ -55,7 +57,7 @@ has version_override => (
 # XXX: *clearly* this needs to be really much smarter -- rjbs, 2008-06-01
 has version => (
   is   => 'rw',
-  isa  => VersionStr,
+  isa  => LaxVersionStr,
   lazy => 1,
   init_arg  => undef,
   required  => 1,
@@ -290,17 +292,18 @@ sub _build_distmeta {
 
   my $meta = {
     'meta-spec' => {
-      version => 1.4,
-      url     => 'http://module-build.sourceforge.net/META-spec-v1.4.html',
+      version => 2,
+      url     => 'http://github.com/dagolden/cpan-meta/',
     },
     name     => $self->name,
     version  => $self->version,
     abstract => $self->abstract,
     author   => $self->authors,
-    license  => $self->license->meta_yml_name,
-    generated_by => (ref $self)
-                  . ' version '
-                  . (defined $self->VERSION ? $self->VERSION : '(undef)')
+    license  => $self->license->meta2_name,
+    dynamic_config => 0,
+    generated_by   => (ref $self)
+                    . ' version '
+                    . (defined $self->VERSION ? $self->VERSION : '(undef)')
   };
 
   $meta = Hash::Merge::Simple::merge($meta, $_->metadata)
@@ -310,7 +313,7 @@ sub _build_distmeta {
 }
 
 
-has prereq => (
+has prereqs => (
   is   => 'ro',
   isa  => 'Dist::Zilla::Prereqs',
   init_arg => undef,
@@ -334,6 +337,7 @@ sub from_config {
   my $core_config = $seq->section_named('_')->payload;
 
   my $self = $class->new({
+    root   => $root,
     %$core_config,
     chrome => $arg->{chrome},
   });
@@ -468,14 +472,7 @@ sub _load_config {
   );
 
   my $root = $arg->{root};
-  my ($sequence) = $config_class->new->read_config({
-    root     => $root,
-    basename => 'dist',
-  });
-
-  # I wonder if the root should be named '' or something, but that's probably
-  # sort of a ridiculous thing to worry about. -- rjbs, 2009-08-24
-  $sequence->section_named('_')->add_value(root => $root);
+  my ($sequence) = $config_class->new->read_config( $root->file('dist') );
 
   return $sequence;
 }
@@ -549,11 +546,10 @@ sub build_in {
 
   $_->register_prereqs for $self->plugins_with(-PrereqSource)->flatten;
 
-  $self->prereq->finalize;
+  $self->prereqs->finalize;
 
-  my $meta   = $self->distmeta;
-  my $prereq = $self->prereq->as_distmeta;
-  $meta->{ $_ } = $prereq->{ $_ } for keys %$prereq;
+  # Barf if someone has already set up a prereqs entry? -- rjbs, 2010-04-13
+  $self->distmeta->{prereqs} = $self->prereqs->as_string_hash;
 
   $_->setup_installer for $self->plugins_with(-InstallTool)->flatten;
 
@@ -726,8 +722,10 @@ sub install {
     my $wd = File::pushd::pushd($target);
     my @cmd = $arg->{install_command}
             ? $arg->{install_command}
-            : ($^X => '-MCPAN' => '-einstall "."');
+            : ($^X => '-MCPAN' =>
+                $^O eq 'MSWin32' ? q{-e"install '.'"} : '-einstall "."');
 
+    $self->log_debug([ 'installing via %s', \@cmd ]);
     system(@cmd) && $self->log_fatal([ "error running %s", \@cmd ]);
   };
 
@@ -856,19 +854,11 @@ sub _global_config {
     or Carp::croak("couldn't determine home directory");
 
   my $file = dir($homedir)->file('.dzil');
-  return unless -e $file;
+  return unless -e $file and -d $file;
 
-  if (-d $file) {
-    return Dist::Zilla::Config::Finder->new->read_config({
-      root     =>  dir($homedir)->subdir('.dzil'),
-      basename => 'config',
-    });
-  } else {
-    return Dist::Zilla::Config::Finder->new->read_config({
-      root     => dir($homedir),
-      filename => '.dzil',
-    });
-  }
+  return Dist::Zilla::Config::Finder->new->read_config(
+    dir($homedir)->subdir('.dzil')->file('config')
+  );
 }
 
 sub _global_config_for {
@@ -910,10 +900,9 @@ sub _new_from_profile {
       "no default dist minting profile available"
     );
   } else {
-    ($sequence) = $config_class->new->read_config({
-      root     => $profile_dir->subdir($profile_name),
-      basename => 'profile',
-    });
+    ($sequence) = $config_class->new->read_config(
+      $profile_dir->subdir($profile_name)->file('profile'),
+    );
   }
 
   my $self = $class->new({
@@ -1033,7 +1022,7 @@ Dist::Zilla - distribution builder; installer not included!
 
 =head1 VERSION
 
-version 2.101310
+version 3.101461
 
 =head1 DESCRIPTION
 
@@ -1135,14 +1124,34 @@ This is a hashref containing the metadata about this distribution that
 will be stored in META.yml or META.json.  You should not alter the
 metadata in this hash; use a MetaProvider plugin instead.
 
-=head2 prereq
+=head2 prereqs
 
-This is a hashref of module prerequisites.  This attribute is likely to get
-greatly overhauled, or possibly replaced with a method based on other
-(private?) attributes.
+This is a L<Dist::Zilla::Prereqs> object, which is a thin layer atop
+L<CPAN::Meta::Prereqs>, and describes the distribution's prerequisites.
 
-I<Actually>, it is more likely that this attribute will contain an object in
-the future.
+=head2 logger
+
+This attribute stores a L<Log::Dispatchouli::Proxy> object, used to log
+messages.  By default, a proxy to the dist's L<Chrome|Dist::Zilla::Chrome> is
+taken.
+
+The following methods are delegated from the Dist::Zilla object to the logger:
+
+=over 4
+
+=item *
+
+log
+
+=item *
+
+log_debug
+
+=item *
+
+log_fatal
+
+=back
 
 =head1 METHODS
 
@@ -1238,11 +1247,12 @@ does it clean up C<$directory> afterwards.
 
 =head2 run_in_build
 
-=head2 log
-
-  $zilla->log($message);
+  $zilla->run_in_build(\@cmd);
 
-This method logs the given message.
+This method makes a temporary directory, builds the distribution there,
+executes the dist's first L<BuildRunner|Dist::Zilla::Role::BuildRunner>, and
+then runs the given command in the build directory.  If the command exits
+non-zero, the directory will be left in place.
 
 =head1 SUPPORT
 
@@ -4,14 +4,18 @@ package Test::DZil;
 
 use Dist::Zilla::Tester;
 use Params::Util qw(_HASH0);
+use JSON 2;
+use YAML::Tiny;
 
 use Sub::Exporter -setup => {
   exports => [
     is_filelist =>
+    is_yaml     =>
+    is_json     =>
     dist_ini    => \'_dist_ini',
     simple_ini  => \'_simple_ini',
   ],
-  groups  => [ default => [ qw(dist_ini simple_ini is_filelist) ] ],
+  groups  => [ default => [ qw(dist_ini simple_ini is_filelist is_yaml is_json) ] ],
 };
 
 sub is_filelist {
@@ -23,6 +27,24 @@ sub is_filelist {
   Test::More::is_deeply(\@have, \@want, $comment);
 }
 
+sub is_yaml {
+  my ($yaml, $want, $comment) = @_;
+
+  my $have = YAML::Tiny->read_string($yaml)
+    or die "Cannot decode YAML";
+
+  Test::More::is_deeply($have->[0], $want, $comment);
+}
+
+sub is_json {
+  my ($json, $want, $comment) = @_;
+
+  my $have = JSON->new->ascii(1)->decode($json)
+    or die "Cannot decode JSON";
+
+  Test::More::is_deeply($have, $want, $comment);
+}
+
 sub _build_ini_builder {
   my ($starting_core) = @_;
   $starting_core ||= {};
@@ -41,6 +41,10 @@ my %wanted = (
   'perl'                  => 5.008,
 );
 
-is_deeply( $meta->{requires}, \%wanted, 'all requires found, but no more' );
+is_deeply(
+  $meta->{prereqs}{runtime}{requires},
+  \%wanted,
+  'all requires found, but no more',
+);
 
 done_testing;
@@ -9,61 +9,141 @@ use Test::DZil;
 use JSON 2;
 use YAML::Tiny;
 
-my $tzil = Dist::Zilla::Tester->from_config(
-  { dist_root => 'corpus/DZT' },
-  {
-    add_files => {
-      'source/dist.ini' => simple_ini(
-        'GatherDir',
-        [ MetaResources => HomePage => { homepage => 'http://bana.na/phone' } ],
-        [ MetaResources => License  => { license  => 'http://b.sd/license'  } ],
-        [ Prereq   => { 'Foo::Bar' => '1.234' } ],
-        [ Prereq   => RuntimeRecommends => { 'Foo::Bar::Opt' => '1.234' } ],
-        [ Prereq   => BuildRequires     => { 'Test::Foo' => '2.34' } ],
-        [ Prereq   => ConfigureRequires => { 'Build::Foo' => '0.12' } ],
-        'MetaJSON',
-        'MetaYAML',
-        'MetaConfig',
-      ),
+{
+  # 2.0
+  my $tzil = Dist::Zilla::Tester->from_config(
+    { dist_root => 'corpus/DZT' },
+    {
+      add_files => {
+        'source/dist.ini' => simple_ini(
+          'GatherDir',
+          [ MetaResources => HomePage => {homepage => 'http://bana.na/phone'}],
+          [ MetaResources => License  => {license  => 'http://b.sd/license' }],
+          [ Prereq   => { 'Foo::Bar' => '1.234' } ],
+          [ Prereq   => RuntimeRecommends => { 'Foo::Bar::Opt' => '1.234' } ],
+          [ Prereq   => BuildRequires     => { 'Test::Foo' => '2.34' } ],
+          [ Prereq   => ConfigureRequires => { 'Build::Foo' => '0.12' } ],
+          'MetaJSON',
+          [ MetaYAML => { version => 2 } ],
+          'MetaConfig',
+        ),
+      },
     },
-  },
-);
+  );
+
+  $tzil->build;
+
+  my @files = map {; $_->name } @{ $tzil->files };
 
-$tzil->build;
+  my %meta;
 
-my @files = map {; $_->name } @{ $tzil->files };
+  my $json = $tzil->slurp_file('build/META.json');
+  $meta{json} = JSON->new->decode($json);
 
-my %meta;
+  my $yaml = $tzil->slurp_file('build/META.yml');
+  $meta{yaml} = YAML::Tiny->new->read_string($yaml)->[0];
 
-my $json = $tzil->slurp_file('build/META.json');
-$meta{json} = JSON->new->decode($json);
+  is_deeply($meta{json}, $meta{yaml}, "META.json is_deeply META.yml");
 
-my $yaml = $tzil->slurp_file('build/META.yml');
-$meta{yaml} = YAML::Tiny->new->read_string($yaml)->[0];
+  for my $type (qw(json yaml)) {
+    my $meta = $meta{$type};
 
-is_deeply($meta{json}, $meta{yaml}, "META.json is_deeply META.yml");
+    my %want = (
+      name      => 'DZT-Sample',
+      abstract  => 'Sample DZ Dist',
+      author    => [ 'E. Xavier Ample <example@example.org>' ],
 
-for my $type (qw(json yaml)) {
-  my $meta = $meta{$type};
+      prereqs   => {
+        runtime => {
+          requires   => { 'Foo::Bar' => '1.234' },
+          recommends => { 'Foo::Bar::Opt' => '1.234' },
+        },
+        build     => { requires => { 'Test::Foo' => '2.34'  } },
+        configure => { requires => { 'Build::Foo' => '0.12' } },
+      },
 
-  my %want = (
-    name      => 'DZT-Sample',
-    abstract  => 'Sample DZ Dist',
-    author    => [ 'E. Xavier Ample <example@example.org>' ],
-    requires  => { 'Foo::Bar' => '1.234' },
-    recommends => { 'Foo::Bar::Opt' => '1.234' },
-    build_requires => { 'Test::Foo' => '2.34' },
-    configure_requires => { 'Build::Foo' => '0.12' },
-    license   => 'perl',
-    resources => {
-      homepage => 'http://bana.na/phone',
-      license  => 'http://b.sd/license',
+      license   => 'perl_5',
+      resources => {
+        homepage => 'http://bana.na/phone',
+        license  => 'http://b.sd/license',
+      },
+      version   => '0.001',
+    );
+
+    for my $key (sort keys %want) {
+      is_deeply(
+        $meta->{ $key },
+        $want{ $key },
+        "$key is what we want in 2.0 $type",
+      );
+    }
+  }
+}
+
+{
+  # 1.4
+  my $tzil = Dist::Zilla::Tester->from_config(
+    { dist_root => 'corpus/DZT' },
+    {
+      add_files => {
+        'source/dist.ini' => simple_ini(
+          'GatherDir',
+          [ MetaResources => HomePage => {homepage => 'http://bana.na/phone'}],
+          [ MetaResources => License  => {license  => 'http://b.sd/license' }],
+          [ Prereq   => { 'Foo::Bar' => '1.234' } ],
+          [ Prereq   => RuntimeRecommends => { 'Foo::Bar::Opt' => '1.234' } ],
+          [ Prereq   => BuildRequires     => { 'Test::Foo' => '2.34' } ],
+          [ Prereq   => ConfigureRequires => { 'Build::Foo' => '0.12' } ],
+          [ MetaJSON => { version => 1.4 } ],
+          'MetaYAML',
+          'MetaConfig',
+        ),
+      },
     },
-    version   => '0.001',
   );
 
-  for my $key (sort keys %want) {
-    is_deeply($meta->{ $key }, $want{ $key }, "$key is what we want in $type");
+  $tzil->build;
+
+  my @files = map {; $_->name } @{ $tzil->files };
+
+  my %meta;
+
+  my $json = $tzil->slurp_file('build/META.json');
+  $meta{json} = JSON->new->decode($json);
+
+  my $yaml = $tzil->slurp_file('build/META.yml');
+  $meta{yaml} = YAML::Tiny->new->read_string($yaml)->[0];
+
+  is_deeply($meta{json}, $meta{yaml}, "META.json is_deeply META.yml");
+
+  for my $type (qw(json yaml)) {
+    my $meta = $meta{$type};
+
+    my %want = (
+      name      => 'DZT-Sample',
+      abstract  => 'Sample DZ Dist',
+      author    => [ 'E. Xavier Ample <example@example.org>' ],
+
+      configure_requires => { 'Build::Foo' => '0.12' },
+      build_requires     => { 'Test::Foo'  => '2.34' },
+      requires   => { 'Foo::Bar' => '1.234' },
+      recommends => { 'Foo::Bar::Opt' => '1.234' },
+
+      license   => 'perl',
+      resources => {
+        homepage => 'http://bana.na/phone',
+        license  => 'http://b.sd/license',
+      },
+      version   => '0.001',
+    );
+
+    for my $key (sort keys %want) {
+      is_deeply(
+        $meta->{ $key },
+        $want{ $key },
+        "$key is what we want in 1.4 $type",
+      );
+    }
   }
 }
 
@@ -57,17 +57,14 @@ $tzil->build;
 {
   my $contents = $tzil->slurp_file('build/txt/dingo.tmpl');
 
-  like(
+  is(
     $contents,
-    qr/Kidneys {{ \$dist->version }}\n/sm,
+    <<'END_TMPL',
+Welcome to Dingo Kidneys {{ $dist->version }}
+Generated by {{ $plugin->VERSION || 0 }}
+END_TMPL
     'we include template literals into dingo.tmpl',
   );
-
-  like(
-    $contents,
-    qr/^Generated by {{ \$plugin->VERSION/sm,
-    'we include template literals into dingo.tmpl (line 2)',
-  );
 }
 
 done_testing;
@@ -0,0 +1,64 @@
+use strict;
+use warnings;
+use Test::More 0.88;
+
+use ExtUtils::Manifest;
+
+use lib 't/lib';
+
+use Test::DZil;
+
+my $tzil = Dist::Zilla::Tester->from_config(
+  { dist_root => 'corpus/DZT' },
+  {
+    add_files => {
+      q{source/file with spaces.txt}        => "foo\n",
+      q{source/file\\with some\\whacks.txt} => "bar\n",
+      # q{source/'file-with-ticks.txt'}       => "baz\n",
+      q{source/file'with'quotes\\or\\backslash.txt} => "quux\n",
+      'source/dist.ini' => simple_ini(
+        'GatherDir',
+        'Manifest',
+      ),
+    },
+  },
+);
+
+$tzil->build;
+
+my $manihash = ExtUtils::Manifest::maniread($tzil->built_in->file('MANIFEST'));
+
+is_deeply(
+  [ sort keys %$manihash ],
+  [ sort(
+    'MANIFEST',
+    q{file with spaces.txt},
+    q{file\\with some\\whacks.txt},
+    q{file'with'quotes\\or\\backslash.txt},
+    # q{'file-with-ticks.txt'},
+    'dist.ini',
+    'lib/DZT/Sample.pm',
+    't/basic.t',
+  ) ],
+  'manifest quotes files with spaces'
+);
+
+my @manilines = split /\n/, $tzil->slurp_file('build/MANIFEST');
+chomp @manilines;
+
+is_deeply(
+  [ sort @manilines ],
+  [ sort(
+    'MANIFEST',
+    q{'file with spaces.txt'},
+    q{'file\\\\with some\\\\whacks.txt'},
+    # q{'\\'file-with-ticks.txt\\''},
+    q{'file\\'with\\'quotes\\\\or\\\\backslash.txt'},
+    'dist.ini',
+    'lib/DZT/Sample.pm',
+    't/basic.t',
+  ) ],
+  'manifest quotes files with spaces'
+);
+
+done_testing;
@@ -0,0 +1,172 @@
+use strict;
+use warnings;
+use Test::More 0.88;
+
+use lib 't/lib';
+
+use Test::DZil;
+use CPAN::Meta::Converter;
+
+my $generated_by = 'Dist::Zilla::Tester version '
+  . (Dist::Zilla::Tester->VERSION || '(undef)');
+
+my $converted_by = "$generated_by, CPAN::Meta::Converter version "
+                 . CPAN::Meta::Converter->VERSION;
+
+{
+  my $tzil = Dist::Zilla::Tester->from_config(
+    { dist_root => 'corpus/DZT' },
+    {
+      add_files => {
+        'source/dist.ini' => simple_ini(
+          [
+            'MetaResources' => {
+              homepage   => 'http://example.com',
+              bugtracker => 'http://bugs.example.com',
+              repository => 'git://example.com/project.git',
+            },
+          ],
+          ['MetaYAML'],
+          ['MetaJSON'],
+        ),
+      },
+    },
+  );
+
+  eval { $tzil->build };
+  ok(!$@,
+    'no errors from old-style bugtracker and repository for MetaResources');
+
+  is_yaml(
+    $tzil->slurp_file('build/META.yml'),
+    {
+      abstract       => 'Sample DZ Dist',
+      author         => ['E. Xavier Ample <example@example.org>'],
+      build_requires => {},
+      dynamic_config => 0,
+      generated_by   => $converted_by,
+      license        => 'perl',
+      'meta-spec'    => {
+        url     => 'http://module-build.sourceforge.net/META-spec-v1.4.html',
+        version => '1.4'
+      },
+      name      => 'DZT-Sample',
+      resources => {
+        homepage   => 'http://example.com',
+        bugtracker => 'http://bugs.example.com',
+        repository => 'git://example.com/project.git',
+      },
+      version => '0.001'
+    },
+    'META.yml matches expected 1.4 spec output'
+  );
+
+  is_json(
+    $tzil->slurp_file('build/META.json'),
+    {
+      abstract       => 'Sample DZ Dist',
+      author         => ['E. Xavier Ample <example@example.org>'],
+      dynamic_config => 0,
+      generated_by   => $generated_by,
+      license        => 'perl_5',
+      'meta-spec'    => {
+        url     => 'http://github.com/dagolden/cpan-meta/',
+        version => 2
+      },
+      name      => 'DZT-Sample',
+      prereqs   => {},
+      resources => {
+        bugtracker => { web => 'http://bugs.example.com' },
+        homepage   => 'http://example.com',
+        repository => { url => 'git://example.com/project.git' }
+      },
+      version => '0.001'
+    },
+    'META.json was 2.0 output, old-style resources were upgraded'
+  );
+}
+
+{
+  my $tzil = Dist::Zilla::Tester->from_config(
+    { dist_root => 'corpus/DZT' },
+    {
+      add_files => {
+        'source/dist.ini' => simple_ini(
+          [
+            'MetaResources' => {
+              homepage            => 'http://example.com',
+              'bugtracker.web'    => 'http://bugs.example.com',
+              'bugtracker.mailto' => 'project@bugs.example.com',
+              'repository.url'    => 'git://example.com/project.git',
+              'repository.web'    => 'http://example.com/git/project',
+              'repository.type'   => 'git',
+            },
+          ],
+          ['MetaYAML'],
+          ['MetaJSON'],
+        ),
+      },
+    },
+  );
+
+  eval { $tzil->build };
+  ok(!$@,
+    'no errors from new-style bugtracker and repository for MetaResources');
+
+  is_yaml(
+    $tzil->slurp_file('build/META.yml'),
+    {
+      abstract       => 'Sample DZ Dist',
+      author         => ['E. Xavier Ample <example@example.org>'],
+      build_requires => {},
+      dynamic_config => 0,
+      generated_by   => $converted_by,
+      license        => 'perl',
+      'meta-spec'    => {
+        url     => 'http://module-build.sourceforge.net/META-spec-v1.4.html',
+        version => '1.4'
+      },
+      name      => 'DZT-Sample',
+      resources => {
+        homepage   => 'http://example.com',
+        bugtracker => 'http://bugs.example.com',
+        repository => 'git://example.com/project.git',
+      },
+      version => '0.001'
+    },
+    'META.yml matches expected 1.4 spec output, new style resources were down-graded'
+  );
+
+  is_json(
+    $tzil->slurp_file('build/META.json'),
+    {
+      abstract       => 'Sample DZ Dist',
+      author         => ['E. Xavier Ample <example@example.org>'],
+      dynamic_config => 0,
+      generated_by   => $generated_by,
+      license        => 'perl_5',
+      'meta-spec'    => {
+        url     => 'http://github.com/dagolden/cpan-meta/',
+        version => 2
+      },
+      name      => 'DZT-Sample',
+      prereqs   => {},
+      resources => {
+        bugtracker => {
+          web    => 'http://bugs.example.com',
+          mailto => 'project@bugs.example.com',
+        },
+        homepage   => 'http://example.com',
+        repository => {
+          type => 'git',
+          url  => 'git://example.com/project.git',
+          web  => 'http://example.com/git/project',
+        }
+      },
+      version => '0.001'
+    },
+    'META.json was 2.0 output'
+  );
+}
+
+done_testing;